Android.Как я могу перейти к активности системы с символом $ на ее пути? - PullRequest
1 голос
/ 12 марта 2019

В моем приложении я хочу перейти на страницу настройки местоположения системы. Запустив

adb shell dumpsys activity activities | grep "mFocusedActivity" 

Я получаю путь активности:

mFocusedActivity: ActivityRecord{eaaabab u0 com.android.settings/.Settings$LocationSettingsActivity t230}

А потом я попытался перейти на эту страницу с кодом.

val intent = Intent()
intent.action = Intent.ACTION_VIEW
intent.setClassName("com.android.settings","com.android.settings.Settings.LocationSettingsActivity")
startActivity(intent)

Но приложение выдает ActivityNotFoundException. Как перейти к занятию? Я заметил специальный символ '$' в этом упражнении , Что означает этот символ $ ?

Решения

Как отвечает @DavidWasser.

intent.setClassName("com.android.settings", "com.android.settings.Settings\$LocationSettingsActivity")

Таким образом, мне удается перейти к этому занятию. Первоначально эта активность была оконным режимом на странице настроек системы, теперь я перехожу прямо на эту страницу в полноэкранном режиме. Но его функции работают правильно.

Таким образом, мы можем перейти к внутреннему классу таким образом, спасибо всем, кто ответил.

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Просто установите имя класса, включая «$».Это означает, что LocationSettingsActivity является внутренним классом:

intent.setClassName("com.android.settings",
            "com.android.settings.Settings$LocationSettingsActivity");
0 голосов
/ 12 марта 2019

Если вы заинтересованы в открытии настроек местоположения, вы можете использовать https://developer.android.com/reference/android/provider/Settings.html#ACTION_LOCATION_SOURCE_SETTINGS

Intent intent = new Intent();
intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS);

ActivityInfo activityInfo = intent.resolveActivityInfo(getPackageManager(), 0);
if (activityInfo != null) {
    startActivity(intent);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...