我无法在Android Oreo中收到“android.provider.Telephony.SMS_RECEIVED”这个广播

时间:2017-12-06 12:14:35

标签: android android-fragments android-broadcastreceiver android-8.0-oreo

这是我的清单文件

<receiver
android:name="com.agribazaar.android.receivers.OTPReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>

这是我的广播接收器类

public class OTPReceiver extends BroadcastReceiver {
   @Override
public void onReceive(Context context, Intent intent) {        
if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){

}
}

1 个答案:

答案 0 :(得分:5)

这解决了我的问题 - 我没有在运行时为android.Manifest.permission.RECEIVE_SMS明确请求权限。     在Android的早期版本中它工作正常但在Android O设备中我遇到了问题。

int SMS_PERMISSION_REQ_CODE_SUBMIT = 101;
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.RECEIVE_SMS)
                            != PackageManager.PERMISSION_GRANTED){

        ActivityCompat.requestPermissions(SmsActivity.this, new String[]{Manifest.permission.RECEIVE_SMS},
                                SMS_PERMISSION_REQ_CODE_SUBMIT);
}