Android'de uygulama "bağlantısını" paylaşın


105

Uygulama kullanıcımın uygulamamı diğer kullanıcılara paylaşmasını / önerebilmesini istiyorum. ACTION_SEND amacını kullanıyorum. Şu satırlar boyunca bir şeyler söyleyen düz metin ekliyorum: bu harika uygulamayı yükleyin. Ancak, örneğin kullanıcıların doğrudan pazar yerinin yükleme ekranına gitmesini sağlayacak bir yol bulamıyorum. Onlara sağlayabileceğim tek şey bir web bağlantısı veya bir metin. Başka bir deyişle, android kullanıcılarının uygulamamı yüklemeleri için çok doğrudan bir yol arıyorum.

Herhangi bir yardım / işaret için teşekkürler,

Thomas

Yanıtlar:


267

Bu, e-posta, whatsapp veya her neyse arasından seçim yapmanıza izin verecektir.

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

1
Firebase paylaşım uygulaması. firebase.google.com/docs/invites/android
Vahe Gharibyan

Bu neden bir dene / yakala bloğuna sarılıyor?
Louis

8
Android, güncellemelerinde o kadar çok değişiklik yapmayı seviyor ki, bu kodun gelecekteki bir güncellemede başarısız olup olmayacağını kim bilebilir
Ton

1
@Ton Uygulama simgesi resmini Konu ve metinle birlikte nasıl gönderebilirim.
Arbaz Alam

arka plan iş parçacığı üzerinde yapın, ana iş parçacığı için bir şekilde ağır. kullanıcılar arka plandaki iş parçacığındaki gecikmeyi hissetmeyecek
blockwala

33

ShareCompat sınıfını destek kitaplığından da kullanabilirsiniz .

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


dil de ayarlayabilir miyiz? Bunun &hlurl'ye etiket eklemek kadar basit olacağını biliyorum , ancak setLang veya başka bir şey gibi kitaplıkta mevcut olup olmadığını merak ediyorum.
kiranking

3
Lütfen bağlantılarda http yerine her zaman https kullanın.
ubuntudroid

20

Thomas,

Kullanıcılarınıza, market://onları doğrudan uygulamanızın ayrıntılar sayfasına götürecek bir bağlantı sağlamak istersiniz . Aşağıdakiler developer.android.com adresinden alınmıştır:

Bir uygulamanın Ayrıntılar sayfasını yükleme

Android Market'te, her uygulamanın, kullanıcılar için uygulamaya genel bir bakış sağlayan bir Ayrıntılar sayfası vardır. Örneğin, sayfa, geliştirici tarafından sağlanmışsa, uygulamanın kısa bir açıklamasını ve kullanımdaki ekran görüntülerini, ayrıca kullanıcılardan gelen geri bildirimleri ve geliştiriciyle ilgili bilgileri içerir. Ayrıntılar sayfası ayrıca, kullanıcının uygulamanın indirilmesini / satın alınmasını tetiklemesini sağlayan bir "Yükle" düğmesi içerir.

Kullanıcıyı belirli bir uygulamaya yönlendirmek isterseniz, uygulamanız kullanıcıyı doğrudan uygulamanın Ayrıntılar sayfasına götürebilir. Bunu yapmak için, uygulamanız şu biçimde bir URI ve sorgu parametresi içeren bir ACTION_VIEW Niyeti gönderir:

market: // ayrıntılar? id =

Bu durumda, paket adı parametresi, uygulamanın bildirim dosyasındaki bildirim öğesinin paket özniteliğinde belirtildiği gibi, hedef uygulamanın tam nitelikli paket adıdır. Örneğin:

market: // ayrıntılar? id = com.example.android.jetboy

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


Bağlantı için +1. Bu iyi görünüyor. Kullanıcının paylaşmasını istediğimden, yine de ACTION_SEND kullanmam ve pazar bağlantısını metnime eklemem gerekiyor. Kullanıcı bunu tıklarsa, onu yükleme sayfasına yönlendirmelidir. Kulağa hoş geliyor, denemeliyim. Seni doğru anladıysam haberim olsun.
Thomas

Evet, bir ACTION_SEND metnindeki market bağlantısını kullanabilirsiniz, ancak bir android cihazdayken tıklandığında çalışacaktır.
Will Tate

1
ancak bu bağlantı, ACTION_SEND kullanırsak pazar bağlantısını açmayacaktır, bağlantı orada basit bir metin olarak kalacaktır. ancak bağlantı ACTION_VIEW İLE pazarın açılması için yararlı oldu.
varun bhardwaj

13

Bu yöntemi arayın:

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

10

Daha kesin olmak gerekirse

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

veya diğer uygulamalarınızı geliştiricinizden paylaşmak istiyorsanız. hesap böyle bir şey yapabilirsin

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

7

Uygulama adını ve uygulama kimliğini otomatik olarak doldurmak için şunu kullanabilirsiniz:

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:"));

5

Uygulamayı başlık ile paylaş, uygulama_adı, içerik senin uygulama bağlantın

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

uygulama simgesi nasıl paylaşılır
John dahat

4

Bu sorunun yanıtlandığını biliyorum, ancak alternatif bir çözüm paylaşmak istiyorum:

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"));

1

son olarak, bu kod benim için e-posta istemcisini android cihazdan açmam için çalıştı. bu parçacığı deneyin.

Intent testIntent = new Intent(Intent.ACTION_VIEW);
                    Uri data = Uri.parse("mailto:?subject=" + "Feedback" + "&body=" + "Write Feedback here....." + "&to=" + "someone@example.com");
                    testIntent.setData(data);
                    startActivity(testIntent);

0

Aslında, uygulamanızı kullanıcılar arasında kesmenin en iyi yolu, google (firebase) yeni teknolojiyi kanıtladı Firebase Dynamic Link Birkaç satır aracılığıyla bunu belgeler https://firebase.google.com/docs/dynamic-links/ ve koddur dır-dir

  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
                        // ...
                    }
                }
            });

0

Paylaşım eylemi için Kotlin uzantısı. Ne istersen paylaşabilirsin, örneğin bağlantı

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

Kullanım

context.share("Check https://stackoverflow.com")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.