服务中的 BroadcastReceiver 没有反应
BroadcastReceiver in service doesn't react
我正在编写一个应用程序来接收 SMS 数据消息,加密其内容并将其保存到数据库中。为了实现它,我创建了一个带有本地 BroadcastReceiver 的服务,如下所示:
public class SMMReceiverService extends Service {
private class SMMreceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
Bundle extras = intent.getExtras();
//call a method from service
}
}
private SMMreceiver smmReceiver;
private IntentFilter intentFilter;
@Override
public void onCreate(){
super.onCreate();
android.os.Debug.waitForDebugger();
smmReceiver = new SMMreceiver();
intentFilter = new IntentFilter();
intentFilter.addAction("android.provider.Telephony.DATA_SMS_RECEIVED");
intentFilter.addDataScheme("sms");
intentFilter.addDataAuthority("localhost","8901");
registerReceiver(smmReceiver, intentFilter);
}
}
服务正常启动,但从未调用 SMMreceiver 的 onReceive 方法。在清单中,我只声明了我的服务如下:
<service
android:name=".Services.SMMReceiverService"
android:enabled="true"
android:exported="true" >
</service>
还有所有必需的权限:
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
如何正确解决我的问题?我将感谢您的帮助!
好吧,看来你已经回答了你自己的问题。
"Service is starting normally but onReceive method of SMMreceiver is never called. In manifest I've declared only my service as follow:"
你还必须在你的清单中声明你的接收者,你这样做了吗?
我正在编写一个应用程序来接收 SMS 数据消息,加密其内容并将其保存到数据库中。为了实现它,我创建了一个带有本地 BroadcastReceiver 的服务,如下所示:
public class SMMReceiverService extends Service {
private class SMMreceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
Bundle extras = intent.getExtras();
//call a method from service
}
}
private SMMreceiver smmReceiver;
private IntentFilter intentFilter;
@Override
public void onCreate(){
super.onCreate();
android.os.Debug.waitForDebugger();
smmReceiver = new SMMreceiver();
intentFilter = new IntentFilter();
intentFilter.addAction("android.provider.Telephony.DATA_SMS_RECEIVED");
intentFilter.addDataScheme("sms");
intentFilter.addDataAuthority("localhost","8901");
registerReceiver(smmReceiver, intentFilter);
}
}
服务正常启动,但从未调用 SMMreceiver 的 onReceive 方法。在清单中,我只声明了我的服务如下:
<service
android:name=".Services.SMMReceiverService"
android:enabled="true"
android:exported="true" >
</service>
还有所有必需的权限:
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
如何正确解决我的问题?我将感谢您的帮助!
好吧,看来你已经回答了你自己的问题。
"Service is starting normally but onReceive method of SMMreceiver is never called. In manifest I've declared only my service as follow:"
你还必须在你的清单中声明你的接收者,你这样做了吗?