我试图在手机重启后重启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);
}
}
答案 0 :(得分:3)
首先,它不会编译,因为BroadcastReceiver
不是Context
。
其次,清单注册的BroadcastReceiver
无法注册监听器。在BroadcastReceiver
完成后,onReceive()
对象及其整个过程可能会消失几毫秒。
请收听ACTION_PHONE_STATE_CHANGED
广播,其中提供与PhoneStateListener
相同的信息。作为额外的奖励,您无需在启动时获得控制权,这可以为您节省许可并加快用户手机的重启速度。