简体   繁体   English

在来电Android上启动活动

[英]launching activity on incoming call-android

I want to launch activity on incoming call my code is like this: 我想在来电中启动活动,我的代码是这样的:

    package com.suraj.test;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.content.BroadcastReceiver;
import android.util.Log;
import android.widget.Toast;

public class IncomingCallReciever extends BroadcastReceiver {

    private Context myContext;
    private Intent myIntent;

    public void onReceive(Context context, Intent intent) {
        myIntent = new Intent(context, CallerId.class);
        myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        myIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

        myContext = context;
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        int events = PhoneStateListener.LISTEN_CALL_STATE;
        tm.listen(phoneStateListener, events);
    }

    private final PhoneStateListener phoneStateListener = new PhoneStateListener() {
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {

            switch (state) {
                case TelephonyManager.CALL_STATE_IDLE:    
                    break;

                case TelephonyManager.CALL_STATE_RINGING:   
                    Thread thread = new Thread() {
                        private int sleepTime = 400;

                        @Override
                        public void run() {
                            super.run();
                            try {
                                int wait_Time = 0;

                                while (wait_Time < sleepTime) {
                                sleep(400);
                                  wait_Time += 100;
                                }
                            } catch (Exception e) {
                            } finally {
                            }
                            IncomingCallReciever.this.myContext.startActivity(IncomingCallReciever.this.myIntent);

                        }
                    };
                    thread.setPriority(Thread.MAX_PRIORITY);
                    thread.run();
            }

            switch (state) {
                case TelephonyManager.CALL_STATE_IDLE:
                    try {
                        CallerId.fa.finish();

                    } catch (NullPointerException e) {
                    }

                    break;
            }

            super.
                    onCallStateChanged(state, incomingNumber);
        }
    };
}

problem is that activity is shown after 1 or 2 seconds later after the caller screen in displayed. 问题是在显示呼叫者屏幕1或2秒后显示活动。 I want to start it immediately after the caller screen. 我想在呼叫者屏幕之后立即启动它。 what can I do 我能做什么

Try removing this block 尝试删除此块

 try {
   int wait_Time = 0;
   while (wait_Time < sleepTime) {
       sleep(400);
       wait_Time += 100;
   }
 } catch (Exception e) {
 } finally {}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM