当我在奥利奥收到otp时,SmsBroadcastReceiver没有触发 . 我已经明确地在片段中注册了我的接收器,而不仅仅是在manifest中 .
public class MyFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
intentFilter = new IntentFilter();
intentFilter.addAction(Telephony.Sms.Intents.SMS_RECEIVED_ACTION);
smsBroadcastReceiver = new SmsBroadcastReceiver();
getActivity().registerReceiver(smsBroadcastReceiver,intentFilter);
return inflater.inflate(
R.layout.fragment_two, container, false);
}
}
这是我的SmsReceiverBroadcast类
public class SmsBroadcastReceiver extends BroadcastReceiver {
public SmsBroadcastReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
Log.d("onRecieve","Otp has been received");
}
} catch (Exception e) {
}
}
}
在我的清单中,
<receiver
android:name=".receiver.SmsBroadcastReceiver"
android:enabled="true"
android:exported="false"
>
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
我没有在广播接收器的覆盖onReceive()方法中获得任何触发器 . 我发现我们需要明确注册广播接收器 . 我使用registerBroadcast()注册我的接收器 . 它对我不起作用 . 另外,我提到https://developer.android.com/about/versions/oreo/background.html
我也尝试过每当我收到otp时,我是否需要添加任何其他权限来注册和触发接收器?我的意图过滤动作( Telephony.Sms.Intents.SMS_RECIEVED_ACTION )是否正确?