2013-04-04 95 views
3

現在我正在開發一個主頁啓動器應用程序。我想清除默認的主頁啓動器(例如:Samsung Home)。即,我想以編程方式顯示Settings-> Applications->Manage Application->Samsung Home->clear defaults如何以編程方式顯示「清除默認值」?

如何通過代碼顯示此代碼?提前

+0

你應該**不**這樣做,而是要求用戶做這個動作。 @DevuSoman – JoxTraex 2013-04-04 04:46:56

+0

請參閱http://stackoverflow.com/questions/2828224/programmatically-unset-a-default-application – CrandellWS 2017-01-13 12:09:24

+0

我認爲,如果您安裝處理此意圖的應用程序,操作系統會自動重置默認設置,因此如果用戶選擇了一個應用程序作爲默認應用程序,您可以禁用並啓用處理此意圖的活動,並且該應用程序會再次被重置。 – 2017-01-28 07:52:58

回答

5

注意

感謝:由於這個問題僅限於訪問管理程序設置選項,我的回答涵蓋了這一點。你將不得不找出一個獲得實際包名的方法。

此外,如果想法是也通過代碼自動清除默認值,那麼,就我所知,無法完成。如果我錯了,有人可以糾正我。

這就是說,這段代碼將從您的應用程序(必須提供包名稱)打開特定應用程序的管理應用程序屏幕。

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

其他職位值得一讀:

  1. https://stackoverflow.com/a/7750187/450534
  2. https://groups.google.com/forum/?fromgroups=#!topic/android-developers/Rzv8VU-EUAw
+1

這適用於版本> = 9 – 2013-04-04 07:56:44

+0

@DevuSoman:哦。涼。從來不需要那個特定的部分,所以不知道。謝謝。 ;-) – 2013-04-04 08:09:29

0

只是爲了完成圖片,爲獲得「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; 
相關問題