0
我正在写一个应用程序接收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" />
如何解决我在正确的方式问题吗?我会感谢您的帮助!
我认为,当接收机动态注册时,我不必声明它在清单。我还需要将接收器更改为静态并将其公开。 – Blady214