2011-01-09 94 views
0

我想知道如何顯示 複選框,使某些應用程序 默認在createChooser dlg中。Android的默認應用程序

在此先感謝。


是的大衛我想知道如何清除默認的應用程序。我想知道我是否可以打電話給任何意圖,如果我知道它的行動,類別,包裹和「班級名稱」,我可以嗎?

我實際上試圖調用一些我以前知道它的意圖內容放置一些安全性的活動。上調。爲什麼?

回答

2

你的問題不是100%清楚,所以如果我回答錯誤的問題,請原諒我。這聽起來像你想要麼:

  1. 彈出一個讓用戶選擇你的活動作爲默認來處理一些意向性的對話;或
  2. 檢查您的活動是否爲默認意圖。

我會回答兩者。

要彈出對話框,讓用戶選擇您的活動作爲處理某些意圖的默認設置,只需以該意圖調用startActivity()即可。例如,如果您想將自己註冊爲默認主屏幕,您只需:

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
startActivity(intent); 

會發生3件事中的1件。

  • 沒有安裝指定的默認(如果用戶只安裝您的應用程序,它會清除默認值),從而彈出會出現,或者你已經默認或別人是默認。
  • 如果你已經是默認的,那麼真棒,只是弄清楚如何處理意圖這一次(也許增加一個EXTRA,解釋說這只是一個測試,所以你的活動立即知道finish())。
  • 如果其他人是默認的,您需要通過清除該應用程序的默認值。如果沒有人是默認的,你可能需要拋出一個Toast通知來解釋用戶應該做什麼。

    Toast.makeText(this, 
         "Please check 'Use by default for this action' and then press 'MyActivity'", 
         Toast.LENGTH_LONG).show(); 
    

這些都是有點凌亂的情況來處理,這將是更好的調用startActivity()之前先檢查。爲此,請使用ResolveInfo

ResolveInfo res = getPackageManager().resolveActivity(intent, 0); 
// Got to be a better way to determine if there is no default... 
if (res.activityInfo.packageName.equals("android")) { 
    // No default selected 
} else if (res.activityInfo.packageName.equals(getPackageName())) { 
    // We are default 
} else { 
    // Someone else is default 
} 

希望這有助於!如果您想了解如何讓用戶輕鬆清除其他應用程序的默認設置,請告訴我。

+0

非常感謝大衛,這對我很有幫助。我很感激你寫這篇文章的努力。 – 2011-01-11 07:32:40