Bagikan "tautan" aplikasi di Android

105

Saya ingin pengguna aplikasi saya dapat membagikan / merekomendasikan aplikasi saya kepada pengguna lain. Saya menggunakan maksud ACTION_SEND. Saya menambahkan teks biasa yang mengatakan sesuatu di sepanjang baris: instal aplikasi keren ini. Tetapi saya tidak dapat menemukan cara untuk memungkinkan pengguna untuk langsung pergi ke layar pemasangan pasar misalnya. Yang bisa saya berikan kepada mereka hanyalah tautan web atau teks. Dengan kata lain, saya mencari cara yang sangat langsung bagi pengguna android untuk menginstal aplikasi saya.

Terima kasih atas bantuan / petunjuknya,

Thomas

Thomas
sumber

Jawaban:

267

Ini akan membiarkan Anda memilih dari email, whatsapp atau apapun.

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();
}   
Ton
sumber
1
Aplikasi berbagi Firebase. baca lebih lanjut tentang firebase.google.com/docs/invites/android
Vahe Gharibyan
Mengapa ini dibungkus dengan blok coba / tangkap?
Louis
7
Android suka membuat begitu banyak perubahan dalam pembaruan mereka sehingga siapa tahu jika kode ini akan gagal di pembaruan mendatang
Ton
1
@Ton Bagaimana cara mengirim gambar ikon aplikasi bersama dengan Subjek dan teks.
Arbaz Alam
lakukan di thread latar belakang, ini agak berat untuk thread utama. pengguna tidak akan merasakan kelambatan pada utas latar belakang
blockwala
33

Anda juga dapat menggunakan kelas ShareCompat dari pustaka dukungan.

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
sumber
bisakah kita mengatur bahasa juga? Saya tahu itu akan sederhana seperti menambahkan &hltag ke url tetapi hanya ingin tahu apakah itu tersedia di perpustakaan seperti setLang atau sesuatu.
kiranking
3
Harap selalu gunakan https, bukan http di tautan.
ubuntudroid
20

Thomas,

Anda ingin memberikan link kepada pengguna market://yang akan membawa mereka langsung ke halaman detail aplikasi Anda. Berikut ini adalah dari developer.android.com:

Memuat halaman Detail aplikasi

Di Android Market, setiap aplikasi memiliki halaman Detail yang memberikan gambaran umum aplikasi untuk pengguna. Misalnya, halaman tersebut menyertakan deskripsi singkat tentang aplikasi dan tangkapan layar yang sedang digunakan, jika disediakan oleh pengembang, serta umpan balik dari pengguna dan informasi tentang pengembang. Halaman Detail juga menyertakan tombol "Instal" yang memungkinkan pengguna memicu download / pembelian aplikasi.

Jika Anda ingin merujuk pengguna ke aplikasi tertentu, aplikasi Anda dapat membawa pengguna langsung ke halaman Detail aplikasi. Untuk melakukannya, aplikasi Anda mengirimkan Maksud ACTION_VIEW yang menyertakan URI dan parameter kueri dalam format ini:

market: // detail? id =

Dalam hal ini, parameter nama paket adalah nama paket yang sepenuhnya memenuhi syarat aplikasi target, seperti yang dideklarasikan dalam atribut paket dari elemen manifes dalam file manifes aplikasi. Sebagai contoh:

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

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

Will Tate
sumber
+1 untuk tautannya. Itu terlihat bagus. Karena saya ingin pengguna berbagi, saya masih perlu menggunakan ACTION_SEND dan menambahkan tautan pasar di teks saya. Jika pengguna mengkliknya, dia harus mengarahkannya ke halaman instal. Kedengarannya bagus, saya harus mencobanya. Beri tahu saya jika saya memahami Anda dengan benar.
Thomas
Ya, Anda dapat menggunakan tautan pasar dalam teks ACTION_SEND, itu hanya akan berfungsi jika diklik saat berada di perangkat android.
Akan Tate
1
tetapi tautan ini tidak akan membuka tautan pasar jika kita menggunakan ACTION_SEND, tautan akan tetap ada di sana sebagai teks sederhana. tetapi tautan itu membantu membuka pasar DENGAN ACTION_VIEW.
varun bhardwaj
13

Panggil metode ini:

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
sumber
10

Lebih tepatnya

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

atau jika Anda ingin berbagi aplikasi lain dari dev. akun Anda dapat melakukan sesuatu seperti ini

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
sumber
7

Untuk secara otomatis mengisi nama aplikasi dan id aplikasi Anda bisa menggunakan ini:

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
sumber
5

Bagikan aplikasi dengan judul adalah nama_aplikasi Anda, konten adalah tautan aplikasi Anda

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
sumber
cara berbagi ikon aplikasi
John dahat
4

Saya tahu pertanyaan ini telah terjawab, tetapi saya ingin membagikan solusi alternatif:

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
sumber
1

Akhirnya, kode ini berfungsi untuk saya membuka klien email dari perangkat android. coba potongan ini.

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
sumber
0

Sebenarnya cara terbaik untuk membagi aplikasi Anda di antara pengguna, google (firebase) membuktikan teknologi baru Firebase Dynamic Link Melalui beberapa baris Anda bisa membuatnya ini adalah dokumentasi https://firebase.google.com/docs/dynamic-links/ dan kodenya adalah

  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
sumber
0

Ekstensi Kotlin untuk tindakan berbagi. Anda dapat membagikan apa pun yang Anda inginkan, misalnya tautan

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

Pemakaian

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