Как программно запустить активность защищенных приложений в телефоне Infinix? - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь проверить свое приложение как защищенное приложение в телефонах Infinix программно ... но это кажется невозможным, поэтому вместо этого я пытаюсь запустить действие защищенных приложений, которое существует в XManager >> Настройки >> Защищенные приложения

Мне удалось просто открыть XManager с помощью этого кода

try {
      startActivity(new Intent().setClassName("com.transsion.mobilebutler",
                    "com.transsion.mobilebutler.MainActivity"));

        } catch (Exception e) {
            Log.d("tag", "e " + e.toString());
        }

Я не могу ничего сделать программно

, когда я попытался запустить действие настроек с помощью этого кода

 try {
            startActivity(new Intent().setComponent(new ComponentName("com.transsion.mobilebutler",
                    "com.transsion.mobilebutler.SettingsActivity")));

        } catch (Exception ex) {
            Log.d("tag", "ex " + ex.toString());

        }

Я получил это исключение

  java.lang.SecurityException: Permission Denial: starting Intent

Также я попытался запустить защищенные приложения напрямую, но снова я получил то же Excepion

try {
            Intent intent = new Intent();
            intent.setClassName("com.transsion.mobilebutler", 
                    "com.transsion.mobilebutler.applicationmanager.view.activities.MemoryAccelerateWhitelistActivity");
            startActivity(intent);
        } catch (Exception e) {
            Log.d("tag", "e " + e.toString());

Обновлено

В некоторых ответах на это исключение предлагается добавить android:exported="true", чтобы манифестировать, когда я добавляю активность, я получил Неразрешенную ошибку класса

    <activity android:name="com.transsion.mobilebutler.SettingsActivity" android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
        </intent-filter>
    </activity>

Есть ли способ решить эту проблему?

1 Ответ

0 голосов
/ 03 октября 2018

Вы, очевидно, не можете этого сделать.Причина, по которой вы получаете исключения «отказано в разрешении», заключается в том, что Activity, который вы пытаетесь запустить, не «экспортируется» (т. Е. Не запускается приложениями, отличными от того, к которому он принадлежит).

Выможно только запустить главный экран настроек.Любое приложение может запускать это.Экран специальных настроек для «защищенных приложений» может быть запущен только самим приложением настроек.

Вам не нужно устанавливать android:exported="true" для чего-либо в вашем приложении, потому что исключение выдается, потому что Activityвы пытаетесь начать не экспортируется.

...