Partager le «lien» de l'application dans Android

105

Je souhaite que l'utilisateur de mon application puisse partager / recommander mon application à d'autres utilisateurs. J'utilise l'intention ACTION_SEND. J'ajoute du texte brut en disant quelque chose du genre: installez cette application cool. Mais je ne trouve pas de moyen de permettre aux utilisateurs d'accéder directement à l'écran d'installation de market place par exemple. Tout ce que je peux leur fournir, c'est un lien Web ou du texte. En d'autres termes, je recherche un moyen très direct pour les utilisateurs d'Android d'installer mon application.

Merci pour toute aide / pointeurs,

Thomas

Thomas
la source

Réponses:

267

Cela vous permettra de choisir entre e-mail, WhatsApp ou autre.

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
la source
1
Application de partage Firebase. en savoir plus sur firebase.google.com/docs/invites/android
Vahe Gharibyan
Pourquoi est-ce enveloppé dans un bloc try / catch?
Louis
7
Android aime faire tellement de changements dans ses mises à jour que qui sait si ce code échouera dans une future mise à jour
Ton
1
@Ton Comment puis-je envoyer l'image de l'icône de l'application avec le sujet et le texte.
Arbaz Alam
faites-le sur le fil d'arrière-plan, c'est en quelque sorte lourd pour le fil principal. les utilisateurs ne sentiront pas le décalage sur le fil d'arrière-plan
blockwala
33

Vous pouvez également utiliser la classe ShareCompat de la bibliothèque de support.

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
la source
pourrions-nous définir la langue aussi? Je sais que ce serait simple d'ajouter une &hlbalise à l'url, mais simplement curieux de savoir si elle est disponible dans une bibliothèque comme setLang ou quelque chose.
kiranking
3
Veuillez toujours utiliser https au lieu de http dans les liens.
ubuntudroid
20

Thomas,

Vous voudriez fournir à vos utilisateurs un market://lien qui les amènera directement à la page de détails de votre application. Ce qui suit provient de developer.android.com:

Chargement de la page Détails d'une application

Dans Android Market, chaque application dispose d'une page Détails qui fournit un aperçu de l'application pour les utilisateurs. Par exemple, la page comprend une brève description de l'application et des captures d'écran de celle-ci en cours d'utilisation, si elles sont fournies par le développeur, ainsi que des commentaires des utilisateurs et des informations sur le développeur. La page Détails comprend également un bouton «Installer» qui permet à l'utilisateur de déclencher le téléchargement / l'achat de l'application.

Si vous souhaitez renvoyer l'utilisateur vers une application spécifique, votre application peut diriger l'utilisateur directement vers la page Détails de l'application. Pour ce faire, votre application envoie une intention ACTION_VIEW qui inclut un URI et un paramètre de requête dans ce format:

marché: // détails? id =

Dans ce cas, le paramètre packagename est le nom de package complet de l'application cible, tel que déclaré dans l'attribut package de l'élément manifest dans le fichier manifeste de l'application. Par exemple:

marché: // détails? id = com.example.android.jetboy

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

Will Tate
la source
+1 pour le lien. Ça à l'air bon. Comme je veux que l'utilisateur partage, je dois toujours utiliser ACTION_SEND et ajouter le lien du marché dans mon texte. Si l'utilisateur clique dessus, il doit le rediriger vers la page d'installation. Ça sonne bien, je dois l'essayer. Faites-moi savoir si je vous ai bien compris.
Thomas
Oui, vous pouvez utiliser le lien du marché dans le texte d'un ACTION_SEND, cela ne fonctionnera que si vous cliquez dessus sur un appareil Android.
Will Tate le
1
mais ce lien n'ouvrira pas le lien du marché si nous utilisons ACTION_SEND, le lien y restera sous forme de texte simple. mais le lien a été utile pour ouvrir le marché AVEC ACTION_VIEW.
varun bhardwaj
13

Appelez cette méthode:

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
la source
10

Pour être plus exact

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

ou si vous souhaitez partager vos autres applications depuis votre développeur. compte, vous pouvez faire quelque chose comme ça

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
la source
7

Pour remplir automatiquement le nom de l'application et l'identifiant de l'application, vous pouvez utiliser ceci:

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
la source
5

Partager l'application avec le titre est vous app_name, le contenu est le lien de votre application

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
la source
comment partager l'icône de l'application
John dahat
4

Je sais que cette question a reçu une réponse, mais j'aimerais partager une solution alternative:

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
la source
1

enfin, ce code est travaillé pour moi pour ouvrir le client de messagerie à partir d'un appareil Android. essayez cet extrait.

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
la source
0

En fait , la meilleure façon de cisaillée entre les utilisateurs que votre application, Google (firebase) a prouvé une nouvelle technologie Firebase Dynamic Link Grâce à plusieurs lignes , vous pouvez rendre cette documentation est https://firebase.google.com/docs/dynamic-links/ et le code est

  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
la source
0

Extension Kotlin pour l'action de partage. Vous pouvez partager ce que vous voulez, par exemple un lien

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

Usage

context.share("Check https://stackoverflow.com")
tomrozb
la source