2012-04-03 65 views
1

我想在android中使用SDK,但我不希望該SDK有權限訪問我沒有明確給出的權限。最重要的是,如果SDK引發未捕獲的異常,我不希望它將整個應用程序關閉。有沒有辦法在Android上對沙盒進行部分的java進程?

在C#中有一個AppDomain的概念,您可以在其中像運行沙箱一樣處理在其中運行的代碼,授予(或限制)權限,並且只提供對您明確想要共享的數據的訪問。

在Java平臺上有沒有像Android平臺一樣的工作?

+0

爲什麼這個問題-1我已經投了票 – Monojit 2012-04-03 18:58:42

+0

:-)謝謝。由於某種原因,它降至-2。仇恨者必須討厭。 – Hounshell 2012-04-03 19:05:56

回答

2

這裏有兩個問題。第一個涉及處理一段不可信代碼中的異常;一個精心編寫的try/catch塊應該注意這一點,只要不可信的部分是純Java。如果允許使用本地代碼,那麼沒有任何缺少進程級別隔離的幫助。要在單獨的進程中運行代碼,請閱讀Android服務;你可以指定一個服務在指定的過程中運行。然後,異常(非託管類)不會降低主應用程序。你會得到一個「服務已經死亡」的例外。

另一個問題是降低權限集。就我所知,無法降低應用程序中的權限集。即使代理過程也無濟於事。如果您運送整個應用程序(在Android的意義上來說)包裝和運行自定義代碼,這可能會有所幫助。但應用程序安裝的後勤將變得棘手。谷歌市場並不支持應用程序相互依賴或先決條件的概念。

+0

關於服務的好處,我認爲這也會吸引圖書館帶來單獨線程(這是一個)的情況。雖然許可是不幸的。我打算把這個開放時間延長一些,也許有一些魔術調用沒有被高度宣傳,* *會起作用。 – Hounshell 2012-04-03 18:38:49

+0

如果你沒有高度宣傳的東西,開始挖掘Android的來源。 – 2012-04-04 18:26:21

0

您賦予應用程序的所有權限都是允許的權限,否則它幾乎不會擁有權限。 您在Manifest.xml中設置了您的權限,否則您無法設置其他類型的權限。

+0

是的,我希望我使用的SDK只能訪問這些權限的子集。 – Hounshell 2012-04-03 18:22:12

相關問題