Chia sẻ "liên kết" ứng dụng trong Android


105

Tôi muốn người dùng ứng dụng của mình có thể chia sẻ / giới thiệu ứng dụng của tôi với những người dùng khác. Tôi sử dụng ý định ACTION_SEND. Tôi thêm văn bản thuần túy nói điều gì đó dọc theo dòng: cài đặt ứng dụng thú vị này. Nhưng tôi không thể tìm ra cách để cho phép người dùng truy cập trực tiếp vào màn hình cài đặt của market place. Tất cả những gì tôi có thể cung cấp cho họ là một liên kết web hoặc một số văn bản. Nói cách khác, tôi đang tìm một cách rất trực tiếp để người dùng Android cài đặt ứng dụng của tôi.

Cảm ơn mọi sự trợ giúp / gợi ý,

Thomas

Câu trả lời:


267

Điều này sẽ cho phép bạn chọn từ email, whatsapp hoặc bất cứ thứ gì.

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
Ứng dụng chia sẻ Firebase. đọc thêm về firebase.google.com/docs/invites/android
Vahe Gharibyan

Tại sao điều này được bao bọc trong một khối thử / bắt?
Louis

7
Android thích thực hiện rất nhiều thay đổi trong các bản cập nhật của họ mà ai biết được liệu mã này có bị lỗi trong bản cập nhật trong tương lai hay không
Ton

1
@Ton Làm cách nào để gửi hình ảnh biểu tượng ứng dụng cùng với Chủ đề và văn bản.
Arbaz Alam

làm điều đó trên luồng nền, bằng cách nào đó nó rất nặng đối với luồng chính. người dùng sẽ không cảm nhận được sự chậm trễ trên sợi nền
blockwala

33

Bạn cũng có thể sử dụng lớp ShareCompat từ thư viện hỗ trợ.

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


chúng ta cũng có thể thiết lập ngôn ngữ? Tôi biết nó sẽ đơn giản như gắn &hlthẻ vào url nhưng chỉ tò mò nếu nó có sẵn trong thư viện như setLang hoặc cái gì đó.
kiranking

3
Vui lòng luôn sử dụng https thay vì http trong các liên kết.
ubuntudroid

20

Thomas,

Bạn muốn cung cấp cho người dùng của mình một market://liên kết sẽ đưa họ trực tiếp đến trang chi tiết của ứng dụng của bạn. Sau đây là từ developer.android.com:

Đang tải trang Chi tiết của ứng dụng

Trong Android Market, mọi ứng dụng đều có trang Chi tiết cung cấp thông tin tổng quan về ứng dụng cho người dùng. Ví dụ: trang bao gồm mô tả ngắn về ứng dụng và ảnh chụp màn hình về ứng dụng đang được sử dụng, nếu được nhà phát triển cung cấp, cũng như phản hồi từ người dùng và thông tin về nhà phát triển. Trang Chi tiết cũng bao gồm nút "Cài đặt" cho phép người dùng kích hoạt tải xuống / mua ứng dụng.

Nếu bạn muốn giới thiệu người dùng đến một ứng dụng cụ thể, ứng dụng của bạn có thể đưa người dùng trực tiếp đến trang Chi tiết của ứng dụng. Để làm như vậy, ứng dụng của bạn sẽ gửi một ACTION_VIEW Ý định bao gồm một URI và tham số truy vấn ở định dạng sau:

thị trường: // chi tiết? id =

Trong trường hợp này, tham số tên gói là tên gói đủ điều kiện của ứng dụng đích, như được khai báo trong thuộc tính gói của phần tử kê khai trong tệp kê khai của ứng dụng. Ví dụ:

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

Nguồn: http://developer.android.com/guide/publishing/publishing.html


+1 cho liên kết. Trông tôt đây. Khi tôi muốn người dùng chia sẻ, tôi vẫn cần sử dụng ACTION_SEND và thêm liên kết thị trường vào văn bản của mình. Nếu người dùng nhấp vào nó, nó sẽ chuyển hướng anh ta đến trang cài đặt. Nghe hay đấy, tôi phải thử nó. Hãy cho tôi biết nếu tôi hiểu bạn đúng.
Thomas

Vâng, bạn có thể sử dụng liên kết thị trường trong văn bản của ACTION_SEND, nó sẽ chỉ hoạt động nếu được nhấp vào trong khi trên thiết bị Android.
Sẽ Tate

1
nhưng liên kết này sẽ không mở liên kết thị trường nếu chúng ta sử dụng ACTION_SEND, liên kết sẽ ở đó dưới dạng văn bản đơn giản. nhưng liên kết rất hữu ích để mở thị trường VỚI ACTION_VIEW.
varun bhardwaj

13

Gọi phương thức này:

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

Chính xác hơn

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

hoặc nếu bạn muốn chia sẻ các ứng dụng khác từ nhà phát triển của mình. tài khoản bạn có thể làm một cái gì đó như thế này

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

Để tự động điền tên ứng dụng và id ứng dụng, bạn có thể sử dụng cách này:

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

Chia sẻ ứng dụng với tiêu đề là bạn app_name, nội dung là liên kết ứng dụng của bạ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)));
}

cách chia sẻ biểu tượng ứng dụng
John dahat

4

Tôi biết câu hỏi này đã được trả lời, nhưng tôi muốn chia sẻ một giải pháp thay thế:

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

cuối cùng, mã này được làm việc để tôi mở ứng dụng email từ thiết bị Android. hãy thử đoạn mã này.

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

Trên thực tế, cách tốt nhất để cắt ứng dụng của bạn giữa những người dùng, google (firebase) đã chứng minh công nghệ mới Liên kết động Firebase Qua một số dòng, bạn có thể làm cho nó đây là tài liệu https://firebase.google.com/docs/dynamic-links/ và mã Là

  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

Phần mở rộng Kotlin cho hành động chia sẻ. Bạn có thể chia sẻ bất cứ điều gì bạn muốn, ví dụ: liên kết

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

Sử dụng

context.share("Check https://stackoverflow.com")
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.