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)

  • Android, wie wählen Sie Datei speichern Ort?
  • Android NDK: Wie bekomme ich Compiler-Architektur in Android.mk dynamisch
  • Wie testen Sie das Android 6.0 Full-Backup-Verhalten?
  • Android - Steuerung einer Aufgabe mit Timer und TimerTask?
  • Inkompatible Plugins für Android-apt nach dem Upgrade auf Android Studio 2.3
  • Dropdown-Menü auf Aktionsleiste
  • Irgendwelche Ratschläge, wie das zu tun?

  • Eclipse: Die angegebene JRE-Installation existiert nicht
  • Was ist das beste Android-Handy zu bekommen als Entwickler
  • Erstellen einer DialogPreference aus XML
  • Wie kann ich Javascript von Android anrufen?
  • Android L FAB Button Schatten
  • Logcat funktioniert nicht im Android-Studio
  • 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.