来电广播接收器不能在实际电话上工作

时间:2013-05-23 05:43:51

标签: android broadcastreceiver

public class IncomingCall extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        String phoneNumber;
        Bundle bundle=intent.getExtras();
        if(bundle!=null){
            phoneNumber=bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
            if(phoneNumber!=null){

                DatabaseHelper databaseHelper=new DatabaseHelper();
                Calendar c=Calendar.getInstance();
                ContentValues contentValues=new ContentValues();
                contentValues.put("incoming_number", phoneNumber);
                contentValues.put("date",String.valueOf(c.get(Calendar.DATE)+"-"+c.get(Calendar.MONTH)+"-"+c.get(Calendar.YEAR)));
                contentValues.put("time", String.valueOf(c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND)));
                databaseHelper.addContact(contentValues);
                databaseHelper.close();
            }
        }
    }

以上代码在模拟器中工作正常,但在实际设备上它不再工作。在我的应用程序中,我不想包含任何活动,所以如何解决问题。

1 个答案:

答案 0 :(得分:0)

在您的代码段中没有看到它,但是当您的代码在模拟器中工作时,您必须静态或动态地注册此侦听器。

我记得,我需要手动启动你的应用程序一次才能接收广播[api版本3以后]。因此,如果您的模拟器和手机版本不同[手机高于3],请从启动器抽屉启动应用程序,然后重试。 这是作为安全功能添加的,因此只有那些用户手动启动的应用才会收到广播。