gpt4 book ai didi

Android广播接收器自定义权限

转载 作者:行者123 更新时间:2023-11-29 20:13:57 25 4
gpt4 key购买 nike

鉴于 Android 中的安全模型,我正在尝试自定义权限。我正在尝试在我的应用程序中强制执行广播者权限。场景是我有一个 Activity A,它触发了这样的广播(在获得许可的情况下):

Intent updateUserBroadcast = new Intent();
updateUserBroadcast.setAction("android.intent.action.ACTION_UPDATE_USERNAME");
updateUserBroadcast.putExtra("username", userName);
sendBroadcast(updateUserBroadcast, "com.android.MaliciousApp.RECEIVE_BROADCAST");

在这个 Activity A 中,我像这样在 onCreate 中注册了一个接收器:

    private BroadcastReceiver mUpdateUsernameReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.v("gaurav", "onReceive called");

SharedPreferences prefs = context.getSharedPreferences("profilePref", Context.MODE_WORLD_READABLE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("username", intent.getStringExtra("username"));
editor.apply();

Toast.makeText(context, context.getString(R.string.string_successfully_updated), Toast.LENGTH_SHORT).show();
}
};

我希望接收方能够收到广播,因为它具有所需的权限。但它没有收到 Activity 发出的广播。关于为什么我不使用 LocalBroadcastManager 可能会有争论,但我的动机是弄清楚为什么这个方法没有按预期工作。

我没有在 list 中声明我的接收者并且只是动态注册它。以上所有代码均来自同一应用程序中的单个 Activity 。所以这里不涉及IPC,只是一个简单的例子来查看权限。任何帮助将不胜感激。

最佳答案

当你想通过一个有权限的广播发送一个 Intent 时,你应该使用

注册你的广播接收器
registerReceiver(receiver, intentFilter, "com.android.MaliciousApp.RECEIVE_BROADCAST", null);

并且在您的 list 中,您必须说明您的应用被授予了哪些权限。

<manifest>
...
<uses-permission android:name="com.android.MaliciousApp.RECEIVE_BROADCAST" />
<permission android:name="com.android.MaliciousApp.RECEIVE_BROADCAST" />
...
</manifest>

权限可以引用文档here .

关于Android广播接收器自定义权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34349837/

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