我有一个应用程序,显示所有应用程序的所有活动。它将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棒棒糖。 请帮忙。
答案 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"的内部类。