0

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);
4

0 に答える 0