Teilen Sie die Anwendung "Link" in Android

104

Ich möchte, dass mein Anwendungsbenutzer meine App für andere Benutzer freigeben / empfehlen kann. Ich benutze die Absicht ACTION_SEND. Ich füge einfachen Text hinzu, der etwas in der Art sagt: Installiere diese coole Anwendung. Ich kann jedoch keine Möglichkeit finden, Benutzern beispielsweise den direkten Zugriff auf den Installationsbildschirm des Marktplatzes zu ermöglichen. Ich kann ihnen nur einen Weblink oder einen Text zur Verfügung stellen. Mit anderen Worten, ich suche nach einer sehr direkten Möglichkeit für Android-Benutzer, meine App zu installieren.

Vielen Dank für jede Hilfe / Hinweise,

Thomas

Thomas
quelle

Antworten:

264

Auf diese Weise können Sie zwischen E-Mail, WhatsApp oder was auch immer wählen.

try { 
    Intent shareIntent = new Intent(Intent.ACTION_SEND);  
    shareIntent.setType("text/plain");
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, "My application name");
    String shareMessage= "\nLet me recommend you this application\n\n";
    shareMessage = shareMessage + "https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID +"\n\n";
    shareIntent.putExtra(Intent.EXTRA_TEXT, shareMessage);  
    startActivity(Intent.createChooser(shareIntent, "choose one"));
} catch(Exception e) { 
    //e.toString();
}   
Tonne
quelle
1
Firebase-Freigabeanwendung. Lesen Sie mehr über firebase.google.com/docs/invites/android
Vahe Gharibyan
Warum ist dies in einen Try / Catch-Block eingeschlossen?
Louis
7
Android liebt es, so viele Änderungen an seinen Updates vorzunehmen, dass wer weiß, ob dieser Code in einem zukünftigen Update fehlschlägt
Ton
@Ton Wie kann ich ein App-Symbol zusammen mit Betreff und Text senden?
Arbaz Alam
Mach es auf einem Hintergrund-Thread, es ist irgendwie schwer für den Haupt-Thread. Benutzer werden die Verzögerung im Hintergrund-Thread nicht spüren
Blockwala
33

Sie können auch die ShareCompat- Klasse aus der Support-Bibliothek verwenden.

ShareCompat.IntentBuilder.from(activity)
    .setType("text/plain")
    .setChooserTitle("Chooser title")
    .setText("http://play.google.com/store/apps/details?id=" + activity.getPackageName())
    .startChooser();

https://developer.android.com/reference/android/support/v4/app/ShareCompat.html

lukjar
quelle
könnten wir auch die Sprache einstellen? Ich weiß, es wäre einfach, ein &hlTag an die URL anzuhängen, aber nur neugierig, ob es in einer Bibliothek wie setLang oder so verfügbar ist.
Kiranking
3
Bitte verwenden Sie in Links immer https anstelle von http.
Ubuntudroid
20

Thomas,

Sie möchten Ihren Benutzern einen market://Link bereitstellen , über den sie direkt zur Detailseite Ihrer App gelangen. Folgendes stammt von developer.android.com:

Laden der Detailseite einer Anwendung

In Android Market verfügt jede Anwendung über eine Detailseite, die Benutzern einen Überblick über die Anwendung bietet. Die Seite enthält beispielsweise eine kurze Beschreibung der App und Screenshots der verwendeten App, sofern diese vom Entwickler bereitgestellt werden, sowie Feedback von Benutzern und Informationen zum Entwickler. Die Detailseite enthält auch eine Schaltfläche "Installieren", mit der der Benutzer den Download / Kauf der Anwendung auslösen kann.

Wenn Sie den Benutzer auf eine bestimmte Anwendung verweisen möchten, kann Ihre Anwendung den Benutzer direkt zur Detailseite der Anwendung führen. Zu diesem Zweck sendet Ihre Anwendung eine ACTION_VIEW-Absicht, die einen URI und einen Abfrageparameter in diesem Format enthält:

Markt: // Details? id =

In diesem Fall ist der Parameter packagename der vollständig qualifizierte Paketname der Zielanwendung, wie im Paketattribut des Manifestelements in der Manifestdatei der Anwendung deklariert. Beispielsweise:

market: // details? id = com.example.android.jetboy

Quelle: http://developer.android.com/guide/publishing/publishing.html

Will Tate
quelle
+1 für den Link. Das sieht gut aus. Da ich möchte, dass der Benutzer teilt, muss ich weiterhin ACTION_SEND verwenden und den Marktlink in meinen Text einfügen. Wenn der Benutzer darauf klickt, wird er zur Installationsseite weitergeleitet. Hört sich gut an, ich muss es versuchen. Lassen Sie mich wissen, ob ich Sie richtig verstanden habe.
Thomas
Ja, Sie können den Marktlink im Text eines ACTION_SEND verwenden. Er funktioniert jedoch nur, wenn Sie auf einem Android-Gerät darauf klicken.
Will Tate
1
Dieser Link öffnet jedoch nicht den Marktlink, wenn wir ACTION_SEND verwenden. Der Link bleibt dort als einfacher Text. Aber der Link war hilfreich, um den Markt WITH ACTION_VIEW zu öffnen.
Varun Bhardwaj
13

Nennen Sie diese Methode:

public static void shareApp(Context context)
{
    final String appPackageName = context.getPackageName();
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "Check out the App at: https://play.google.com/store/apps/details?id=" + appPackageName);
    sendIntent.setType("text/plain");
    context.startActivity(sendIntent);
}
Nilesh Panchal
quelle
10

Genauer gesagt

   Intent intent = new Intent(Intent.ACTION_VIEW);
   intent.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.android.example"));
   startActivity(intent);

oder wenn Sie Ihre anderen Apps von Ihrem Entwickler teilen möchten. Konto können Sie so etwas tun

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://play.google.com/store/apps/developer?id=Your_Publisher_Name"));
startActivity(intent);
OWADVL
quelle
7

Um den Anwendungsnamen und die Anwendungs-ID automatisch einzugeben, können Sie Folgendes verwenden:

int applicationNameId = context.getApplicationInfo().labelRes;
final String appPackageName = context.getPackageName();
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_SUBJECT, activity.getString(applicationNameId));
String text = "Install this cool application: ";
String link = "https://play.google.com/store/apps/details?id=" + appPackageName;
i.putExtra(Intent.EXTRA_TEXT, text + " " + link);
startActivity(Intent.createChooser(i, "Share link:"));
Ben Groot
quelle
5

Teilen Sie die Anwendung mit dem Titel "app_name", der Inhalt ist Ihr Anwendungslink

private static void shareApp(Context context) {
    final String appPackageName = BuildConfig.APPLICATION_ID;
    final String appName = context.getString(R.string.app_name);
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    String shareBodyText = "https://play.google.com/store/apps/details?id=" +
            appPackageName;
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, appName);
    shareIntent.putExtra(Intent.EXTRA_TEXT, shareBodyText);
    context.startActivity(Intent.createChooser(shareIntent, context.getString(R.string
            .share_with)));
}
Phan Van Linh
quelle
3

Ich weiß, dass diese Frage beantwortet wurde, möchte aber eine alternative Lösung vorstellen:

Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
String shareSubText = "WhatsApp - The Great Chat App";
String shareBodyText = "https://play.google.com/store/apps/details?id=com.whatsapp&hl=en";
shareIntent.putExtra(Intent.EXTRA_SUBJECT, shareSubText);
shareIntent.putExtra(Intent.EXTRA_TEXT, shareBodyText);
startActivity(Intent.createChooser(shareIntent, "Share With"));
Amit Mhaske
quelle
1

Schließlich wird dieser Code für mich gearbeitet, um den E-Mail-Client von Android-Gerät zu öffnen. Versuchen Sie dieses Snippet.

Intent testIntent = new Intent(Intent.ACTION_VIEW);
                    Uri data = Uri.parse("mailto:?subject=" + "Feedback" + "&body=" + "Write Feedback here....." + "&to=" + "[email protected]");
                    testIntent.setData(data);
                    startActivity(testIntent);
Kishan Vasoya
quelle
0

Der beste Weg, um Ihre App zwischen Nutzern zu scheren, ist Google (Firebase), eine bewährte neue Technologie. Firebase Dynamic Link Über mehrere Zeilen können Sie die Dokumentation https://firebase.google.com/docs/dynamic-links/ und den Code erstellen ist

  Uri dynamicLinkUri = dynamicLink.getUri();
      Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
            .setLink(Uri.parse("https://www.google.jo/"))
            .setDynamicLinkDomain("rw4r7.app.goo.gl")
            .buildShortDynamicLink()
            .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
                @Override
                public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                    if (task.isSuccessful()) {
                        // Short link created
                        Uri shortLink = task.getResult().getShortLink();
                        Uri flowchartLink = task.getResult().getPreviewLink();
                        Intent intent = new Intent();
                        intent.setAction(Intent.ACTION_SEND);
                        intent.putExtra(Intent.EXTRA_TEXT,  shortLink.toString());
                        intent.setType("text/plain");
                        startActivity(intent);
                    } else {
                        // Error
                        // ...
                    }
                }
            });
ahmad
quelle
0

Kotlin-Erweiterung für Share-Aktion. Sie können teilen, was Sie wollen, zB Link

fun Context.share(text: String) =
    this.startActivity(Intent().apply {
        action = Intent.ACTION_SEND
        putExtra(Intent.EXTRA_TEXT, text)
        type = "text/plain"
    })

Verwendung

context.share("Check https://stackoverflow.com")
Tomrozb
quelle