2017-09-17 8 views
1

Um Shortcut-Liste aller Anwendungen, die auf meinem Telefon installiert sind, ich mache das und es funktioniert gut.Öffnen Sie andere Anwendungen Verknüpfungen aus meiner App programmatisch 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);  

Und in onActivityResult dies tun.

@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(); 
       } 
      } 

     } 
    } 
    } 

Aber das Problem ist in onActivityResult data.getParcelableExtra("android.intent.extra.shortcut.INTENT") null zurückkehrt. Manchmal gibt es keine Null zurück, wenn ich zum Beispiel die Google Mail-Verknüpfung starte, aber zur gleichen Zeit für die Einstellungsverknüpfung Null zurückgibt.
Aber ich möchte, wenn Benutzer wählen, welche Nummer von Kontakten Verknüpfung oder eine andere Verknüpfung, die ich anrufen aufrufen Bildschirm für diesen Kontakt direkt anrufen.
bitte helfen.
Vielen Dank im Voraus.

Antwort

0

Ein einfacher Weg, um Ihre Aufgabe zu erreichen, ist die Verwendung android:autoLink="phone" in der XML-Datei wird es direkt beim Klicken auf die Nummer aufrufen.

Verwandte Themen