2013-07-12 44 views
0

我想在導出的活動中實現細粒度保護機制。權限框架似乎不適合我的要求。Android:從活動獲取調用應用程序的信息

有我正在考慮兩個方案:

  • 使用Activity.getCallingPackage - 只有當活動開始startActivityForResult工作 - 這是我想盡可能避免的限制。
  • 使用Binder.getCallingUid - 在Activity中調用時,它返回本地UID,而不是調用UID。

是否有任何方法允許startActivity啓動的活動檢索有關調用應用程序的任何信息?

回答

0

您可以添加額外的信息在您的意圖。

Intent i = new Intent(this, NextClass.class); 
i.putExtra("extra", "This is some extra information"; 
startActivity(i); 

您從NextClass通過檢索數據:

Intent i = getIntent(); 
String extraStuff = i.getStringExtra("extra"); 
+0

我想只允許我的活動中的某些功能訪問信任的客戶端。意圖不可信,任何應用程序都可以添加額外的信息。我正在考慮的保護方案中,所有可信的應用都在應用清單中包含一些簽名的元數據。要閱讀它,我必須訪問調用應用程序的PackageInfo。 – user2577593

+0

對不起,我對此沒有任何建議。祝你好運。 – buczek

0

有沒有什麼辦法可以讓活動開始startActivity檢索有關調用應用程序的任何信息?

不,對不起,超出您的startActivityForResult()黑客行爲。 Android對「細粒度保護機制」的支持是圍繞服務設計的,而不是活動或其他組件。

+0

謝謝。這很不幸。我很驚訝其他幾個似乎有這個問題,似乎是一個非常基本的安全啓用。 – user2577593

+0

@ user2577593:恕我直言,這與安全無關。您試圖實施的是授權系統,只有授權應用程序(「可信任方」)才能執行操作。作爲其IPC模型的一部分,Android沒有跨應用程序許可框架。如果「可信方」都是您自己的應用程序,那麼您可以使用簽名級權限,而不需要知道請求者是誰,只需使用與您的簽名相同的簽名密鑰進行簽名。 – CommonsWare

+0

是的,許可系統 – user2577593

相關問題