在android oreo及以上版本中接收数据短信

在android oreo及以上版本中接收数据短信,android,broadcastreceiver,Android,Broadcastreceiver,我曾经使用隐式广播接收器来接收数据短信,但现在使用安卓O就不可能了 <receiver android:name=".receiver.SMSReceiver"> <intent-filter> <action android:name="android.intent.action.DATA_SMS_RECEIVED"/> <data android:scheme="sms"/>

我曾经使用隐式广播接收器来接收数据短信,但现在使用安卓O就不可能了

<receiver android:name=".receiver.SMSReceiver">
        <intent-filter>
            <action android:name="android.intent.action.DATA_SMS_RECEIVED"/>
            <data android:scheme="sms"/>
            <data android:port="10013"/>
        </intent-filter>
    </receiver>


关于如何在android O和更高版本上实现数据sms,有什么想法吗?

在清单文件中声明广播接收器

  <receiver android:name=".SMSReader">
            <intent-filter android:priority="999" android:exported="true">
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
创建一个单独的方法来处理SMS

 private BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equalsIgnoreCase("read")) {
                final String message = intent.getStringExtra("message");
                final String sender = intent.getStringExtra("sender");
                formatMessage(message,sender);
            }
        }
    };

请参阅此链接,此链接在后台不起作用。
LocalBroadcastManager.getInstance(this).registerReceiver(receiver, new IntentFilter("read"));
 private BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equalsIgnoreCase("read")) {
                final String message = intent.getStringExtra("message");
                final String sender = intent.getStringExtra("sender");
                formatMessage(message,sender);
            }
        }
    };