2013-12-10 156 views
1

當用戶單擊按鈕時,他將獲得支持使用此代碼的快捷方式的應用程序列表。從Android應用程序獲取快捷方式意圖信息

Intent j; 
j = new Intent(Intent.ACTION_PICK_ACTIVITY); 
j.putExtra(Intent.EXTRA_INTENT, new Intent(Intent.ACTION_CREATE_SHORTCUT)); 
j.putExtra(Intent.EXTRA_TITLE, "Create a Shortcut"); 
startActivityForResult(j, choose_app_for_shortcut); 

他選擇的應用程序後,我向用戶顯示快捷鍵列表此應用程序支持此代碼在onActivityResul()方法

onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if(resultCode == Activity.RESULT_OK && data != null) { 
     switch(requestCode){ 
     case: choose_app_for_shortcut 
      Intent i = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT); 
      startActivityForResult(data, pick_shortcut_from_app); 
      break; 
     case pick_shortcut_from_app: 
      ? 
      ? 
    } 
} 

的問題是:我需要什麼碼在:(case: pick_shortcut_from_app)得到我需要運行這個快捷方式的信息?最終目標是將此信息存儲在文件中,以便應用程序記住該選擇,並在應用程序關閉後啓動快捷方式。我嘗試了一些東西,但它導致應用程序崩潰,因此您的幫助將不勝感激!

我進了一步使用此代碼

String uri = data.toURI().toString(); 
    try { 
     startActivity(Intent.getIntent(uri)); 
     } catch (URISyntaxException e) { 
      e.printStackTrace(); 
     } 

,但我得到我奇怪的消息,問我想用它來完成這個動作有什麼應用程序。並且快捷方式的應用程序不在列表中!

回答

0

看起來像在這裏:

startActivity(Intent.getIntent(uri)); 

你實際上是使用具有不正確的動作組的意圖。試試這個:

Intent intent = Intent.getIntent(uri); 
intent.setAction(Intent.ACTION_PICK_ACTIVITY); 
startActivity(intent); 
相關問題