Oreo(API 26)より前のバージョンではうまく動作しますが、API 26では無視されるSMSリスナーがあります。ドキュメントによれば、SMS_RECEIVED_ACTION
は暗黙のブロードキャストの制限(link)から免除されています。変更は必要ありません。私はマニフェストにこれを持ってOreoのSMS BroadcastReceiver
public class SmsListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
(...)
}
}
:
<receiver android:name=".communication.SmsListener"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
もthisなどの異なるサンプルプロジェクトを試してみまし権限
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
を設定ここで
は私のリスナーです同様に、結果は同じであり、SMSはAPI26に取り込まれない。誰かが私に実用的なサンプルを提供することができますか、何かを変更する必要があるか、API 26にバグがあるかどうかを知る手助けがありますか?
デバイス、またはエミュレータでこれをテストしていますか?私は試したエミュレータのどれでもこれを再現することはできません。 –
エミュレータとデバイスの両方で試しました。サンプルプロジェクトを私に送ることができますか? –
それは何も特別です。新しいプロジェクト、マニフェスト ''と ''要素を追加し、 'MainActivity'に' requestPermissions() 'を追加し、Receiverクラスを作成し、' Toast'を追加します。私はReceiverを動的に登録することもテストしました。別のユーザーが以前にOreoで失敗したと主張する質問を投稿したためです。私はそれが動作しないようにすることはできません、以前のバージョンで働いていた場合、あなたが失敗している理由を本当に考えることができません。 –