[英]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.