0

如何在 中正确注册BroadcastReceiver传入短信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);
    }
}

但即使在 an 中动态注册 ReceiverActivity也不起作用:

sr = new SmsReceiver(); // Broadcast receiver
IntentFilter iff = new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION);
registerReceiver(sr, iff);
4

0 回答 0