2017-04-09 47 views
0

我有一個應用程序顯示所有應用程序的所有活動。它顯示的多用戶設置活動作爲

com.android.settings.Settings$UserSettingsActivity

點擊上面的快捷鍵,這個應用程序啓動常規多用戶設置的活動。但是,當我嘗試從am或其他應用程序意向方式嘗試啓動相同的活動時,它無法啓動。

我從亞行的嘗試,
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

當您使用以下命令:

am start com.android.settings.Settings$UserSettingsActivity 

亞行需要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」,這是一個內部類「融爲一體。 android.settings.Settings」。