gpt4 book ai didi

Android O中不调用具有签名权限的Android隐式BroadcastReceiver

转载 作者:行者123 更新时间:2023-12-04 17:37:50 28 4
gpt4 key购买 nike

在我的第一个应用程序中,我在 list 文件中定义了自定义权限和隐式 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();

}
}

在我的第二个应用程序中,我在 list 文件中添加了权限:

<uses-permission android:name="com.example.test.TEST" />

在这里,我发送广播:

getActivity().sendBroadcast(new Intent("com.example.test.TEST_RECEIVER"));

但是第一个应用程序没有调用任何东西。我知道我们不能在 android O 及更高版本中使用隐式广播,但根据 here ,对于需要签名权限的广播有一个异常(exception):

Broadcasts that require a signature permission are exempted from thisrestriction, since these broadcasts are only sent to apps that aresigned with the same certificate, not to all the apps on the device.

那么如何在 android O 中向我的其他应用发送信号?

最佳答案

根据 CommonsWare 的回答,问题是我缺少 setPackage() 部分。所以我更改了如下代码,现在收到了广播:

getActivity().sendBroadcast(new Intent("com.example.test.TEST_RECEIVER").setPackage("com.example.test"));

关于Android O中不调用具有签名权限的Android隐式BroadcastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55921817/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com