2017-09-17 33 views
1

私の電話にインストールされているすべてのアプリのショートカットリストを取得するには、これを実行していますが、うまくいきます。私のアプリから他のアプリのショートカットをプログラムで開きますandroid

PackageManager packageManager=getPackageManager(); 
       Intent shourcutIntent = new Intent(Intent.ACTION_CREATE_SHORTCUT); 
       List<ResolveInfo> resolveInfos=null; 
       resolveInfos=packageManager.queryIntentActivities(shourcutIntent,0); 
       List<Intent> intentList=new ArrayList<>(); 
       int a=0; 
       for (ResolveInfo resolveInfo: resolveInfos) 
       { 
        Intent intent=new Intent(Intent.ACTION_MAIN); 
        intent.addCategory(Intent.CATEGORY_DEFAULT); 
        intent.setComponent(new ComponentName(resolveInfo.activityInfo.applicationInfo.packageName,resolveInfo.activityInfo.name)); 
        Log.d("list"+" "+a,""+intent); 
        a++; 
        intentList.add(intent); 
       } 
       startActivityForResult(intentList.get(11),567);  

これを行うonActivityResultです。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode==567) 
    { 
     if(resultCode== Activity.RESULT_OK) 
     { 
      Intent intent = (Intent) data.getParcelableExtra("android.intent.extra.shortcut.INTENT"); 
      if(intent!=null) 
      { 
       Log.d("getParcelableExtra", "!null"); 
       String uri = intent.toUri(0); 
       try 
       { 
        Intent intent1 = Intent.parseUri(uri, 0); 
        intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        startActivity(intent1); 

       } 
       catch (URISyntaxException e) 
       { 
        e.printStackTrace(); 
       } 
      } 

     } 
    } 
    } 

しかし、問題は、onActivityResult data.getParcelableExtra("android.intent.extra.shortcut.INTENT") であるがnullを返しています。 Gmailのショートカットを起動しても設定のショートカットと同時にnullを返すなど、nullが返されることがあります。
しかし、連絡先のショートカットやその他のショートカットから呼び出す番号をユーザーが選択するときに、その連絡先の呼び出し画面を直接起動したいと考えています。
助けてください。
ありがとうございます。

答えて

0

あなたの仕事を達成する簡単な方法の1つは、xmlファイル内でandroid:autoLink="phone"を使用することです。これは、番号をクリックすると直接呼び出されます。

関連する問題