和我在谷歌Play应用的问题。 我有一个免费的应用程序,它利用自定义权限。 此权限允许访问付费应用。 这些付费应用作为“钥匙”,并在免费应用程序解锁功能。 基本上免费的应用程序将尝试启动了付费应用程序之一的意图。 在付费应用程序会做一些东西,并返回说免费的应用程序是否应解锁功能,或者不。
问题出现了基于应用程序的安装顺序。 如果免费的应用程序首次安装,然后付费应用,免费的应用程序无法启动的意图。 返回权限拒绝。 如果安装了付费应用程序第一次那么免费的应用程序,免费的应用程序可以启动的意图没有问题。 重新启动设备和/或力停止的应用程序不能解决问题。 我附加了relavent代码。 东西告诉我,我做得不正确。
免费应用程序清单(相关代码):
... <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>