我正在使用廣播接收器來攔截電話。我想用來電者的姓名覆蓋默認的來電屏幕。我有一個數據庫的應用程序,與聯繫人分開保存電話號碼。BroadcastReceivers和PopUps
我正在攔截通話,但是當我顯示彈出窗口時,它不覆蓋默認來電屏幕。來電屏幕打開,然後被我的應用程序(它轉到最後一個打開的活動)取代並覆蓋彈出窗口。
我在做什麼錯?
我的呼叫Reciver:
public class CallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
Intent i = new Intent(context, IncomingCallPopup.class);
i.putExtras(intent);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
context.startActivity(i);
}
}}
我的彈出式活動:
public class IncomingCallPopup extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
//getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.call_popup);
String phoneNumber = getIntent().getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
TextView text = (TextView)findViewById(R.id.text);
text.setText("Incoming call from " + phoneNumber);
}
}
我缺少什麼?
這應該是不可能的。您可能會收到電話通知,但我不相信您可以取消默認來電屏幕。也許你必須建立你自己的系統映像或者比默認的屏幕大一些。 – 2011-04-08 09:48:35