【Android O中不会调用具有签名权限的Android隐式BroadcastReceiver】仰天大笑出门去,我辈岂是蓬蒿人。这篇文章主要讲述Android O中不会调用具有签名权限的Android隐式BroadcastReceiver相关的知识,希望能为你提供帮助。
在我的第一个应用程序中,我在清单文件中定义了自定义权限和隐式BroadcastReceiver
:
<
permission
android:name="com.example.test.TEST"
android:protectionLevel="signature" />
<
receiver
android:name=".TestBroadcastReceiver"
android:enabled="true"
android:exported="true"
android:permission="com.example.test.TEST">
<
intent-filter>
<
action android:name="com.example.test.TEST_RECEIVER" />
<
/intent-filter>
<
/receiver>
这是TestBroadcastReceiver.java:
public class TestBroadcastReceiver extends BroadcastReceiver {@Override
public void onReceive(Context context, Intent intent) {Log.d("Test", "Hello World!");
Toast.makeText(context, "Hello World!", Toast.LENGTH_LONG).show();
}
}
在我的第二个应用程序中,我在清单文件中添加了权限:
<
uses-permission android:name="com.example.test.TEST" />
在这里,我发送广播:
getActivity().sendBroadcast(new Intent("com.example.test.TEST_RECEIVER"));
但在第一个应用程序中没有任何内容我知道我们不能在android O及以上版本中使用隐式广播,但根据here,需要签名权限的广播有一个例外:
需要签名许可的广播不受此限制,因为这些广播仅发送到使用相同证书签名的应用程序,而不是发送到设备上的所有应用程序。那么如何在android O中发信号通知我的其他应用呢?
答案根据CommonsWare的回答,问题是我缺少
setPackage()
部分。所以我改变了下面的代码,现在接收广播:getActivity().sendBroadcast(new Intent("com.example.test.TEST_RECEIVER").setPackage("com.example.test"));
推荐阅读
- Android - 启动时启动服务
- android BroadcastReceiver有时会在onReceive上抛出NullPointerException
- Swift - 从AppDelegate向View Controller添加子视图
- 使用flask-jwt-extended回调与flask-restful和create_app
- 将Angular App发布为facebook Instant Article
- Apple ITunes AppStore客户评论rss端点无法正常工作
- 如何测试和修复电子邮件欺骗/缺少SPF记录漏洞()
- 9个WordPress扫描程序来查找安全漏洞
- 如何在几分钟内找到域的子域()