如何修复不受保护的SMS BroadcastReceiver lint警告

我的应用程序需要能够接收短信。 一切正常,但我得到这个lint警告:

声明SMS_DELIVER或SMS_RECEIVED的intent-filter的BroadcastReceivers必须确保调用者具有BROADCAST_SMS权限,否则恶意actor可能会欺骗意图。

如何“确保调用者具有BROADCAST_SMS权限”?

在我的清单中,我有:

        

我的代码:

 public class SmsReceiver extends BroadcastReceiver { public SmsReceiver() {} @Override public void onReceive(final Context context, final Intent intent) { final Bundle bundle = intent.getExtras(); if (bundle != null) { final Object[] pdusObj = (Object[]) bundle.get("pdus"); for (int i = 0; i < pdusObj.length; i++) { final SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]); // use currentMessage } } } } 

  • Android - 注册一个广播接收器的两个意图?
  • PACKAGE_REMOVED然后PACKAGE_ADDED与PACKAGE_REPLACED意图行动一起被触发
  • 如何正确过滤包替换广播
  • 如何使用意向filter捕获Android限制到特定URL的意图?
  • Android - 匹配url模式?
  • Android:我可以以编程方式启用/禁用活动的意图filter吗?
  • 在我的N1启动后,我的BroadcastReceiver没有收到BOOT_COMPLETED的意图
  • 使用Android Intentfilter匹配URL中的HTTP参数
  • android:permission="android.permission.BROADCAST_SMS"到开始标记。

    此外,默认情况下启用组件, 将其导出,因此您实际上不需要显式包含这些属性。