在Google Play上我的應用出現問題。我有一個免費的應用程序,它使用自定義權限。此權限允許訪問付費應用程序。這些付費應用充當「鑰匙」,並在免費應用中解鎖功能。基本上免費的應用程序將嘗試啓動其中一個付費應用程序的意圖。付費應用會做一些事情,並返回說免費應用是否應該解鎖功能。基於應用安裝訂單,Android自定義權限失敗
問題出現了基於應用程序的安裝順序。如果免費應用程序首先安裝了付費應用程序,那麼免費應用程序無法啓動該意圖。返回權限拒絕。如果付費應用程序先安裝了免費應用程序,免費應用程序可以啓動意圖沒問題。重新啓動設備和/或強制停止應用程序不能解決問題。我附上了相關代碼。有些事告訴我我做錯了一些事情。
免費應用程序清單(相關代碼):
... <uses-permission android:name="com.company.license.PERMISSION" /> ...
免費應用程序代碼來檢查意向(相關代碼):
Intent KeyApp = new Intent("com.company.license.action.AUTH_1"); KeyApp.putExtra("com.company.license.challenge", 1); //If free app is installed first, an exception is thrown for not having the proper permission. If paid app is installed first, no exception is thrown try { startActivityForResult(KeyApp, COMMING_FROM_KEYAPP); } catch (Exception e) { cancelStartUp(); }
付費應用清單(相關代碼):
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company.installer.1" ... <permission android:name="com.company.license.PERMISSION" android:icon="@drawable/icon" android:label="@string/app_name" android:protectionLevel="normal" > </permission> <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoDisplay" > <activity android:name="com.company.license.auth" android:configChanges="keyboardHidden|orientation" android:exported="true" android:permission="com.company.license.PERMISSION" android:theme="@style/Theme.Transparent" > <intent-filter> <action android:name="com.company.license.action.AUTH_1" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name="com.company.installer.redirect" android:configChanges="keyboardHidden|orientation" android:exported="true" android:theme="@style/Theme.Transparent" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
這樣做的伎倆。謝謝! – 2012-07-30 22:09:15
問題:如果首次安裝的應用程序指定了,並且具有相同的權限,則在安裝時不會向用戶通知權限請求。安裝第二個應用後,第一個應用可以訪問需要該權限的第二個應用的組件。主要的安全問題? –
2014-01-30 18:04:38
@MarkCarter:用戶肯定不會被提示輸入'簽名'級別的權限。但是,這並不取決於安裝順序。永遠不會出現'簽名'級別的權限。由於「簽名」級別權限是由一個開發人員(或團隊)編寫的代碼,所以假設這些權限控制着什麼數量來聚合內部通信,並且用戶不需要打擾。但是,如果您使用自定義的「正常」或「危險」權限看到您描述的行爲,那會讓我感到意外,我需要做更多的研究。 – CommonsWare 2014-01-30 18:09:13