2011-04-03 75 views

回答

1

這將是非常的安全,不要你想,如果一個應用程序可以給另一個應用程序的任何權限...

一些惡人將只需要說服你安裝一個自己的應用程序;然後,無論您安裝了哪個其他B應用程序,B應用程序在安裝(稍後將由A授予)都不需要任何特定權限 - 而B仍然可以執行您設備上的任何內容?

我當然希望你所要求的是不可能的;-)

1

您的應用程序可以提供一些內容提供商獲取信息。應用程序B可以使用A的內容提供者獲得信息。 http://developer.android.com/guide/topics/providers/content-providers.html

但不知何故,這聽起來像你想做一些邪惡的事情。如果您想獲得更多信息,請提供更多關於您需要這樣做的信息!

+2

我不想做任何壞事。我有興趣創建一個授予動態權限的系統。因此,任何需要許可的應用程序都可以向我的應用程序發送信號,在那裏我會要求用戶身份驗證和一些到期機制,以便在一段時間後覆蓋給定的權限。如果用戶同意我會授予我請求的應用程序的權限。 – scari 2011-04-03 18:29:08

+0

這就是我想要做的...請幫助 – scari 2011-04-03 18:29:31

+0

有沒有什麼辦法可以在我的應用程序中啓用所有權限的情況下,執行'未經許可'應用程序所建議的工作。 像執行處理程序到該應用程序中定義的函數? ( 如我錯了請糾正我 )。 或者你可以請建議任何代碼或文檔,我可以找到在運行時android如何處理權限請求。 (不是Manifest.xml)(真正的android源碼) – scari 2011-04-04 09:14:41

2

據我所知,應用程序不一定會授予其他應用程序的權限,但AppB可以從AppA繼承權限,如果您是這兩個應用程序的開發人員。如果AppA和AppB在其清單中聲明瞭相同的sharedUserId值(android:sharedUserId =「xyz」),並且AppA和AppB都使用相同的簽名進行簽名,那麼Android會認爲它們是相同的應用程序,只要權限不變。因此,AppB可以在設備上存在,例如「perm1」未經許可。然後,AppA可以安裝「perm1」。如果AppA和AppB具有相同的sharedUserId和簽名,那麼當安裝AppA時,AppB將被「授予」「perm1」。

我剛纔沒有測試過,但我知道它曾經工作過(截至一年前)。

1

是的,這是可能的使用PendingIntents迂迴的方式。這不是一個確切的代碼片段,但應該給你的想法:

你不能傳遞權限,但你可以傳遞能力來執行某些行動從A到B.假設你想要傳遞執行一定的能力ACTION

  1. A需要創建未決意圖:

    Intent intent = new Intent(ACTION);
    PendingIntent pIntent = PendingIntent.getActivity(context, requestCode, intent, flags);

  2. 阿通過編組未決意圖

    Intent intent = new Intent(context, B.class);
    intent.putExtra("pendingIntent", pIntent);
    其發送到乙

  3. 在B點,我們反序列化掛起的意圖,我們可以用它來進行限制ACTION

    PendingIntent pIntent = intent.getExtra("pendingIntent");
    pIntent.send();

相關問題