Android 在手机启动时启动ContentObserver
我正在使用Android 在手机启动时启动ContentObserver,android,Android,我正在使用广播接收器在手机启动时接收广播,我想从那里注册PhoneStateListener和ContentObserver。不幸的是,它不允许我在我的主要活动中使用setReceiver()方法来处理ContentObserver之类的内容。PhoneStateListener和startService()也存在类似的问题,但我能够使用传递的上下文使其工作。这并不能解决setReceiver的问题。调用此方法的正确方法是什么 顺便说一下,它给出的错误是“类型上下文的方法setReceiver(
广播接收器
在手机启动时接收广播,我想从那里注册PhoneStateListener
和ContentObserver
。不幸的是,它不允许我在我的主要活动中使用setReceiver()
方法来处理ContentObserver
之类的内容。PhoneStateListener
和startService()
也存在类似的问题,但我能够使用传递的上下文使其工作。这并不能解决setReceiver
的问题。调用此方法的正确方法是什么
顺便说一下,它给出的错误是“类型上下文的方法setReceiver(SmsObserver)未定义”
我的代码:
public class BootReceiver extends BroadcastReceiver {
private Context mContext;
@Override
public void onReceive(Context context, Intent intent) {
mContext = context;
// Get the telephony manager
TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
// Create a new PhoneStateListener
PhoneStateListener listener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (state == TelephonyManager.CALL_STATE_IDLE) {
Intent update = new Intent(mContext,
UpdateService.class);
mContext.startService(update);
}
}
@Override
public void onDataActivity(int direction) {
if (direction == TelephonyManager.DATA_ACTIVITY_NONE) {
Intent update = new Intent(mContext,
UpdateService.class);
mContext.startService(update);
}
}
};
// Register the listener with the telephony manager
telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
telephonyManager.listen(listener,
PhoneStateListener.LISTEN_DATA_ACTIVITY);
SmsObserver smsSentObserver = new SmsObserver(new Handler(), mContext);
//Unable to call this method
mContext.setReceiver(smsSentObserver);
}
}
这并不能解决setReceiver的问题。调用此方法的正确方法是什么
从策略上讲,Android中没有setReceiver()
方法。如果SmsObserver
应该是ContentObserver
,您将使用ContentResolver
和notifyChange()
来注册它
从战略上讲,您的代码是无用的,因为您的进程可以在onReceive()
结束后很快终止,这使得所有这些工作都没有意义。可以终止它是因为我在广播接收器中运行它,还是这也适用于活动?在我的主要活动中,我在onCreate中使用了相同的代码位,但没有注意到ContentObserver在任何时间后停止。它正在观察已发送的SMS框并刷新onChange()中的我的小部件,因为它在关机时被终止。我正在尝试在手机启动时再次启动它。@MattHarris:“它能够被终止是因为我在广播接收器中运行它,还是这也适用于活动?”--如果你不在前台,Android最终将终止您的进程。