2012-03-20 85 views
3

我正在創建一個自定義首選項來記住用戶想要從可能性列表中運行哪個活動。 (有效地實現Chooser的「始終啓動此活動,當您看到此類意圖時」,但會特別記住我的特定應用程序的結果,而不是系統範圍的結果。)堅持Android發射意圖?

我得到可能的活動列表這個:

Intent myIntent = new Intent(); 
    myIntent.setAction(Intent.ACTION_SEND); 
    myIntent.setType("text/plain");  
    myIntent.putExtra(Intent.EXTRA_TEXT, "Probe text"); 

    PackageManager manager = getContext().getPackageManager(); 
    List<ResolveInfo> infoList = manager.queryIntentActivities(myIntent,PackageManager.MATCH_DEFAULT_ONLY); 

...導致列表ResolveInfo s。

我的問題是,一旦我的用戶選擇其中之一,堅持這種偏好的最佳方式是什麼?也就是說,我應該怎樣寫入我的SharedPreferences(如果可能,寫在單個項目中),以及在我的應用程序的下一次運行中,如何讀取並從相應的Intent中觸發?

回答

3

好了,你可以調用toUri()Intent要把它轉換成一個Uri,然後你就可以通過標準toString()變成String。要反轉該過程,請使用Intent.parseUri()String解析爲Intent

但是,你需要足夠的保護增加應對各種可能性,如:

  • 用戶刪除的應用程序
  • 用戶升級應用程序,該應用程序不再支持Intent you saved

另外,請小心你在哪裏粘住探針(文本)。 :-)

+0

謝謝,這似乎工作得很好。我會小心刪除/更改的應用程序,並與我的探針:) – 2012-03-20 21:52:07