我在 Google Play 上的应用出现问题。我有一个使用自定义权限的免费应用程序。此权限允许访问付费应用程序。这些付费应用程序充当“钥匙”并解锁免费应用程序中的功能。基本上,免费应用程序将尝试启动其中一个付费应用程序的意图。付费应用程序会做一些事情并返回说免费应用程序是否应该解锁功能。
根据应用程序安装的顺序出现问题。如果先安装免费应用程序然后安装付费应用程序,则免费应用程序无法启动意图。返回权限拒绝。如果先安装付费应用然后安装免费应用,免费应用可以启动意图没有问题。重新启动设备和/或强制停止应用程序并不能解决问题。我附上了相关代码。有些东西告诉我我做错了什么。
免费应用清单(相关代码):
... <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>