无法从ON_BOOT_COMPLETED广播接收器启动PhoneStateListener

时间:2011-04-16 04:05:07

标签: android

我试图在手机重启后重启PhoneStateListener(如果我的isRunning SharedPref为真......即在重启之前监听器正在运行)

这是我的代码......

Eclipse在行上给出了一个错误:final TelephonyManager telephonyManager =(TelephonyManager)getSystemService(srvcName);

它表示没有定义getSystemService(String)。谁知道为什么?相同的基本代码在我的主应用程序活动中运行良好。

public class MyReceiver extends BroadcastReceiver {
    SharedPreferences mPrefs;

    String srvcName = Context.TELEPHONY_SERVICE;
    final TelephonyManager telephonyManager = (TelephonyManager)getSystemService(srvcName); 

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


        mPrefs = context.getSharedPreferences("myAppPrefs", 0); 
        if(getRunning()){
             telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
        }

      }

1 个答案:

答案 0 :(得分:3)

首先,它不会编译,因为BroadcastReceiver不是Context

其次,清单注册的BroadcastReceiver无法注册监听器。在BroadcastReceiver完成后,onReceive()对象及其整个过程可能会消失几毫秒。

请收听ACTION_PHONE_STATE_CHANGED广播,其中提供与PhoneStateListener相同的信息。作为额外的奖励,您无需在启动时获得控制权,这可以为您节省许可并加快用户手机的重启速度。