我正在创建一个需要读取传入短信的应用程序。不需要保存到SMS提供商 - 只需在收到短信时显示祝酒。
<receiver android:name=".SmsHandler"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
接收机
public class SmsHandler extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Receive sms", Toast.LENGTH_LONG).show();
}
}
接收器在app运行时工作,如果app kill,接收器不能呼叫。
我知道使用Android KitKat,您需要指定使用短信的默认应用程序。但是,如果要将SMS保存到SMS提供程序,则必须执行此操作。如果您需要抓住接收短信的时刻,则不需要这样做。
当应用程序被杀死时,我该怎么做才能使接收器工作?
更新
我尝试使用该服务注册BroadcastReceiver
public class AlarmService extends Service {
private static BroadcastReceiver SmsHandler;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate()
{
registerScreenOffReceiver();
}
@Override
public void onDestroy()
{
unregisterReceiver(SmsHandler);
SmsHandler = null;
}
private void registerScreenOffReceiver()
{
SmsHandler = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Receive sms", Toast.LENGTH_LONG).show();
}
};
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(SmsHandler, filter);
}
}