BroadcastReceiver
で着信 SMSを適切に登録するにはどうすればよいActivity
ですか? おそらく API レベル 26 で導入されたバックグラウンド実行制限が原因で、マニフェストへの登録が機能していません。
必要なアクセス許可はマニフェストにあります。
<uses-permission android:name="android.permission.RECEIVE_SMS"> </uses-permission>
<uses-permission android:name="android.permission.READ_SMS"> </uses-permission>
<uses-permission android:name="android.permission.SEND_SMS"> </uses-permission>
Receiver エントリと同様に:
<receiver android:name=".SmsReceiver" android:exported="true">
<intent-filter>
<action android:name= "android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
レシーバー クラス:
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context," test sucessfull",Toast.LENGTH_LONG).show();
}
}
私も実行時に許可を要求しました:
public void getPermission() {
if (ContextCompat.checkSelfPermission(getApplicationContext(),
Manifest.permission.READ_SMS)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.RECEIVE_SMS},
My_Permission);
}
}
しかし、Receiver を動的に登録しても機能しActivity
ません。
sr = new SmsReceiver(); // Broadcast receiver
IntentFilter iff = new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION);
registerReceiver(sr, iff);