現在我正在開發一個主頁啓動器應用程序。我想清除默認的主頁啓動器(例如:Samsung Home)。即,我想以編程方式顯示Settings-> Applications->Manage Application->Samsung Home->clear defaults
。如何以編程方式顯示「清除默認值」?
如何通過代碼顯示此代碼?提前
現在我正在開發一個主頁啓動器應用程序。我想清除默認的主頁啓動器(例如:Samsung Home)。即,我想以編程方式顯示Settings-> Applications->Manage Application->Samsung Home->clear defaults
。如何以編程方式顯示「清除默認值」?
如何通過代碼顯示此代碼?提前
注意
感謝:由於這個問題僅限於訪問管理程序設置選項,我的回答涵蓋了這一點。你將不得不找出一個獲得實際包名的方法。
此外,如果想法是也通過代碼自動清除默認值,那麼,就我所知,無法完成。如果我錯了,有人可以糾正我。
這就是說,這段代碼將從您的應用程序(必須提供包名稱)打開特定應用程序的管理應用程序屏幕。
Intent showSettings = new Intent();
showSettings.setAction(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uriAppSettings = Uri.fromParts("package", "THE_APP_PACKAGE_NAME", null);
showSettings.setData(uriAppSettings);
startActivity(showSettings);
例如,如果谷歌地圖應用程序的包名是com.google.android.apps.maps
,替換THE_APP_PACKAGE_NAME
與它的代碼將打開管理應用程序屏幕的谷歌地圖應用程序。
UPDATE:
的PackageManager具有用於清除通過代碼的缺省的方法,clearPackagePreferredActivities。然而,不似乎較新的Android版本的工作:https://stackoverflow.com/a/10246711/450534
其他職位值得一讀:
這適用於版本> = 9 – 2013-04-04 07:56:44
@DevuSoman:哦。涼。從來不需要那個特定的部分,所以不知道。謝謝。 ;-) – 2013-04-04 08:09:29
只是爲了完成圖片,爲獲得「THE_APP_PACKAGE_NAME」youc可以使用類似這樣的內容:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
String packageName = resolveInfo.activityInfo.packageName;
你應該**不**這樣做,而是要求用戶做這個動作。 @DevuSoman – JoxTraex 2013-04-04 04:46:56
請參閱http://stackoverflow.com/questions/2828224/programmatically-unset-a-default-application – CrandellWS 2017-01-13 12:09:24
我認爲,如果您安裝處理此意圖的應用程序,操作系統會自動重置默認設置,因此如果用戶選擇了一個應用程序作爲默認應用程序,您可以禁用並啓用處理此意圖的活動,並且該應用程序會再次被重置。 – 2017-01-28 07:52:58