Сбой пользовательского разрешения Android в зависимости от порядка установки приложения

Возникли проблемы с моими приложениями в 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>
    
13
задан SheIs_LeThiCongNhan 30 July 2012 в 22:03
поделиться