无法启动设置$ UserSettingsActivity

时间:2017-04-09 21:00:13

标签: android android-intent android-activity

我有一个应用程序,显示所有应用程序的所有活动。它将MultiUser Settings活动显示为

com.android.settings.Settings$UserSettingsActivity

点击此应用程序的上述快捷方式可启动常规多用户设置活动。但是,当我尝试从am或其他方式(如应用程序意图)启动相同的活动时,它无法启动。

我试过adb,
am start com.android.settings.Settings$UserSettingsActivity
结果日志是

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] pkg=com.android.settings.Settings }
Error: Activity not started, unable to resolve Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.android.settings.Settings }

我也尝试从应用程序意图开始,如

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.android.settings.Settings", "com.android.settings.Settings.UserSettingsActivity"));
startActivity(intent);

仍然没有用。

我的Android设备版本是5.1.1棒棒糖。 请帮忙。

1 个答案:

答案 0 :(得分:0)

使用以下命令时:

am start com.android.settings.Settings$UserSettingsActivity

adb将com.android.settings.Settings$UserSettingsActivity作为包名称,并尝试查找该包的启动Intent,但失败(因为com.android.settings.Settings$UserSettingsActivity不是包名。

如果要启动特定组件,语法为:

am start com.android.settings/com.android.settings.Settings$UserSettingsActivity

您需要指定由" /"

分隔的包名和类名

在代码中执行此操作时:

intent.setComponent(new ComponentName("com.android.settings.Settings", "com.android.settings.Settings.UserSettingsActivity"));

您将错误的参数传递给ComponentName构造函数。构造函数有两个参数:包名和类名。这需要像这样:

intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.Settings$UserSettingsActivity"));

包名是" com.android.settings"并且类名是" com.android.settings.Settings $ UserSettingsActivity"这是" com.android.settings.Settings"的内部类。