[英]Android broadcast receiver custom permissions
考慮到Android中的安全模型,我正在嘗試自定義權限。 我正在嘗試在我的應用程序中強制執行廣播者權限。 場景是我有一個活動A,它觸發了這樣的廣播(具有許可):
Intent updateUserBroadcast = new Intent();
updateUserBroadcast.setAction("android.intent.action.ACTION_UPDATE_USERNAME");
updateUserBroadcast.putExtra("username", userName);
sendBroadcast(updateUserBroadcast, "com.android.MaliciousApp.RECEIVE_BROADCAST");
在本活動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();
}
};
我希望接收者能夠收到廣播,因為它具有所需的權限。 但是它沒有接收到該活動發送的廣播。 關於為什么我不使用LocalBroadcastManager可能會有爭論,但是我的動機是弄清楚為什么這種方法不能按預期工作。
我沒有在清單中聲明我的接收器,而僅動態地對其進行注冊。 以上所有代碼均來自同一應用程序中的單個活動。 因此,這里不涉及IPC,僅是一個簡單的檢查權限的示例。 任何幫助,將不勝感激。
如果要通過具有許可權的廣播發送意圖,則應使用以下方法注冊廣播接收器:
registerReceiver(receiver, intentFilter, "com.android.MaliciousApp.RECEIVE_BROADCAST", null);
並且在清單中,您將必須告訴已為您的應用授予了哪些權限。
<manifest>
...
<uses-permission android:name="com.android.MaliciousApp.RECEIVE_BROADCAST" />
<permission android:name="com.android.MaliciousApp.RECEIVE_BROADCAST" />
...
</manifest>
您可以在此處參考有關許可的文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.