Wie kann ich Share Intent in Android anpassen?

Jetzt kann ich die Share Intent verwenden, um den Share Dialog zu öffnen

Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, link); startActivity(Intent.createChooser(intent, "Share with")); 

Aber ich brauche den Dialog nicht zu erscheinen und direkt zu einem sozialen Netzwerk zum Beispiel (FB oder Twitter)

  • Such-Widget auf Action-Bar löst meine Suchaktivität nicht aus
  • Arduino + Bluetooth-Modul + Android
  • Wie schicke ich mehrere Bilder, die im Ordner zum Google-Laufwerk in Android programmgesteuert sind?
  • Reagieren Sie Native: Aktualisieren Sie das App-Layout, nachdem die Tastatur angezeigt wurde
  • OCR-Bibliothek zur Erkennung von Nummern auf dem Messgerät
  • Wie ist Android Instagram strukturiert?
  • Irgendwelche Ratschläge, wie das zu tun?

  • Wie kann ich Log-Levels in Android aktivieren / deaktivieren?
  • Singleton mit Kontext in Android
  • Fabric maven repo verursacht langsame gradle baut
  • Gibt es einen sicheren Weg, um API-Schlüssel zu verwalten?
  • Senden Sie SMS in android
  • Ändern Sie die Farbe der Überlauftaste auf ActionBar
  • 4 Solutions collect form web for “Wie kann ich Share Intent in Android anpassen?”

    Nein, das kannst du nicht. Absicht soll auf diese Weise arbeiten. Wenn Sie eine bestimmte App zum Öffnen erzwingen müssen, verwenden Sie explizite Absicht, wenn die Ziel-Apps diese unterstützen. Ohne die Paketnamen oder die Komponentennamen der Ziel-Apps oder den Typ- oder Mime-Typ von Daten zu kennen, können Sie nicht eine bestimmte App erzwingen, um auf generalisierte Absicht zu arbeiten.

    Es gibt einen Weg, um direkt die Absicht zu öffnen, die du willst. Sie können die Liste der Absicht und öffnen nur eine.

    Siehe diesen Code:

     private void initShareIntent(String type) { boolean found = false; Intent share = new Intent(android.content.Intent.ACTION_SEND); share.setType("image/jpeg"); // gets the list of intents that can be loaded. List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(share, 0); if (!resInfo.isEmpty()){ for (ResolveInfo info : resInfo) { if (info.activityInfo.packageName.toLowerCase().contains(type) || info.activityInfo.name.toLowerCase().contains(type) ) { share.putExtra(Intent.EXTRA_SUBJECT, "subject"); share.putExtra(Intent.EXTRA_TEXT, "your text"); share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(myPath)) ); // Optional, just if you wanna share an image. share.setPackage(info.activityInfo.packageName); found = true; break; } } if (!found) return; startActivity(Intent.createChooser(share, "Select")); } } 

    Wenn du den Film eröffnen willst, mach das:

     initShareIntent("twi"); 

    Wenn Facebook:

     initShareIntent("face"); 

    Wenn mail:

     initShareIntent("mail"); // or "gmail" 

    Wenn Sie wollen, um eine Liste der Absicht, die mit dem Typ, insted der Verwendung der ersten mach, sehen Sie diesen Beitrag: Android Intent für Twitter-Anwendung

    Zuerst liste alle apps zu teilen.

     private java.util.List<ResolveInfo> showAllShareApp() { java.util.List<ResolveInfo> mApps = new ArrayList<ResolveInfo>(); Intent intent = new Intent(Intent.ACTION_SEND, null); intent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); intent.setType("text/plain"); PackageManager pManager = getPackageManager(); mApps = pManager.queryIntentActivities(intent, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT); return mApps; } 

    Dann wähle einen aus

      private void share(ResolveInfo appInfo) { Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); if (appInfo != null) { sendIntent .setComponent(new ComponentName( appInfo.activityInfo.packageName, appInfo.activityInfo.name)); } sendIntent.setType("text/plain"); // startActivity(Intent.createChooser(sendIntent, "Share")); startActivity(sendIntent); } 

    Hier ist ein Beispielprojekt .

    Sie können alle E-Mail-Client mit ACTION_SENDTO wie

      Intent getMailClients = new Intent(Intent.ACTION_SENDTO); getMailClients.setData(Uri.parse("mailto:")); final PackageManager pm = this.getPackageManager(); final List<ResolveInfo> emailsClients = pm.queryIntentActivities(getMailClients, 0); if (emailsClients.size() == 0) { Toast.makeText(this, "There are no email clients installed", Toast.LENGTH_LONG).show(); return; } 

    Und dann deinen eigenen Wähler erstellen (Dialog mit der Liste der gegründeten Apps). Wenn der Benutzer auf den Artikel klickt, kannst du so einfach machen.

      Intent sendMailIntent = new Intent(Intent.ACTION_SEND); sendMailIntent.setType(some type like text/plain or other you need); ... there you can set SUBJECT,EMAILTO, attach files ... final List<ResolveInfo> matches = pm.queryIntentActivities(sendMailIntent, 0); ResolveInfo sendingProgramm = null; for (final ResolveInfo info : matches) { if (info.activityInfo.packageName.equals(clickedResolveInfo.activityInfo.packageName)) { sendingProgramm = info; sendMailIntent .setClassName(sendingProgramm.activityInfo.packageName, sendingProgramm.activityInfo.name); break; } } startActivity(sendMailIntent); 

    Vielleicht hilft es dir.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.