2014-09-19 70 views
1

我有兩個應用程序。其中一個有一個自定義內容提供商,它的功能就像一個魅力。從另一個應用程序的自定義內容提供商訪問

APP A - >從供應商需要數據

一切一個在這種情況下工作正常 - >將與供應商

APP B中的一個:

1:安裝應用程式

第二:安裝應用B

然而,當我這樣做是這樣的:

1:安裝應用B

第二:安裝應用程式

我得到的錯誤:

09-19 13:07:22.576: E/AndroidRuntime(14621): Caused by: java.lang.SecurityException: Permission Denial: opening provider 
uk.co.ringsizer.ui.BirthProvider from ProcessRecord{450c14c8 14621:uk.co.gemtv/u0a360} 
(pid=14621, uid=10360) requires com.eir.provider.Size.READ_DATABASE 
or com.eir.provider.Size.WRITE_DATABASE 

我的權限是在清單文件中明確表示,他們是正確的,因爲它的工作原理,如果我以不同的順序安裝應用程序。

這是我第一次使用內容提供者,我對Android比較陌生,所以這個問題對於更有經驗的開發者來說可能是顯而易見的。

任何想法?其他人有過同樣的問題嗎?

在此先感謝。

+0

發現這個異常並告訴用戶重新安裝應用程序......這是您唯一能做的事情... http://code.google.com/p/android/issues/detail?id = 25906 – Selvin 2014-09-19 12:33:10

回答

2

定義自定義<permission>的應用程序必須安裝在通過<uses-permission>請求它的應用程序之前。如果按錯誤順序安裝,則<uses-permission>應用程序無法獲得權限,必須將其卸載並重新安裝。

Custom permissions in general are risky for SDK apps

+0

由於PUBLIC共享偏好已被棄用,我認爲我唯一可以使用的就是內容提供者。你有類似的建議嗎? – user3328051 2014-09-19 13:07:03

+0

@ user3328051:您的問題不在於使用「ContentProvider」 - 任何涉及自定義權限的IPC都會遇到同樣的問題。此外,使用''的應用程序需要處理用戶不需要其他應用程序,無法安裝其他應用程序(例如,它與其設備不兼容),安裝並稍後卸載其他應用程序的情況應用程序等 – CommonsWare 2014-09-19 16:34:44

+0

對不起,4年後,但 如何處理使用LoaderManager時的SecurityException – Pankaj 2018-02-02 10:17:30