แชร์ "ลิงก์" แอปพลิเคชันใน Android


105

ฉันต้องการให้ผู้ใช้แอปพลิเคชันของฉันสามารถแชร์ / แนะนำแอปของฉันให้กับผู้ใช้รายอื่นได้ ฉันใช้เจตนา ACTION_SEND ฉันเพิ่มข้อความธรรมดาที่พูดอะไรบางอย่างตามบรรทัด: ติดตั้งแอปพลิเคชั่นสุดเจ๋งนี้ แต่ฉันไม่สามารถหาวิธีที่จะให้ผู้ใช้ไปที่หน้าจอการติดตั้งของตลาดได้โดยตรงเช่น ทั้งหมดที่ฉันสามารถให้ได้คือลิงค์เว็บหรือข้อความบางส่วน กล่าวอีกนัยหนึ่งฉันกำลังมองหาวิธีที่ตรงมากสำหรับผู้ใช้ Android ในการติดตั้งแอปของฉัน

ขอบคุณสำหรับความช่วยเหลือ / คำแนะนำ

โทมัส

คำตอบ:


267

สิ่งนี้จะช่วยให้คุณเลือกจากอีเมล whatsapp หรืออะไรก็ได้

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 อ่านเพิ่มเติมเกี่ยวกับfirebase.google.com/docs/invites/android
Vahe Gharibyan

เหตุใดสิ่งนี้จึงถูกรวมไว้ในบล็อก try / catch
หลุยส์

8
รัก Android ที่จะทำให้เกิดการเปลี่ยนแปลงหลายอย่างในการปรับปรุงของพวกเขาที่ใครจะรู้ถ้ารหัสนี้จะล้มเหลวในการปรับปรุงในอนาคต
Ton

1
@Ton ฉันจะส่งภาพไอคอนแอพพร้อมกับหัวเรื่องและข้อความได้อย่างไร
Arbaz Alam

ทำบนเธรดพื้นหลังมันหนักสำหรับเธรดหลัก ผู้ใช้จะไม่รู้สึกถึงความล่าช้าของเธรดพื้นหลัง
blockwala

33

คุณยังสามารถใช้คลาสShareCompatจากไลบรารีสนับสนุน

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


เราตั้งภาษาด้วยได้ไหม ฉันรู้ว่ามันง่ายเหมือนการต่อท้าย&hlแท็กเข้ากับ url แต่แค่อยากรู้ว่ามีอยู่ในไลบรารีเช่น setLang หรืออะไร
kiranking

3
โปรดใช้ https แทน http ในลิงก์เสมอ
ubuntudroid

20

โทมัส

คุณต้องการให้market://ลิงก์แก่ผู้ใช้ของคุณซึ่งจะนำพวกเขาไปยังหน้ารายละเอียดของแอปของคุณโดยตรง ต่อไปนี้มาจาก developer.android.com:

กำลังโหลดหน้ารายละเอียดของแอปพลิเคชัน

ใน Android Market ทุกแอปพลิเคชันจะมีหน้ารายละเอียดที่ให้ภาพรวมของแอปพลิเคชันสำหรับผู้ใช้ ตัวอย่างเช่นหน้านี้มีคำอธิบายสั้น ๆ เกี่ยวกับแอปและภาพหน้าจอของแอปที่ใช้งานอยู่หากได้รับจากผู้พัฒนาตลอดจนข้อเสนอแนะจากผู้ใช้และข้อมูลเกี่ยวกับนักพัฒนาซอฟต์แวร์ หน้ารายละเอียดยังมีปุ่ม "ติดตั้ง" ที่ช่วยให้ผู้ใช้ทริกเกอร์การดาวน์โหลด / ซื้อแอปพลิเคชัน

หากคุณต้องการแนะนำผู้ใช้ไปยังแอปพลิเคชันเฉพาะแอปพลิเคชันของคุณสามารถนำผู้ใช้ไปที่หน้ารายละเอียดของแอปพลิเคชันได้โดยตรง ในการทำเช่นนั้นแอปพลิเคชันของคุณจะส่ง ACTION_VIEW Intent ที่มี URI และพารามิเตอร์การค้นหาในรูปแบบนี้:

ตลาด: // รายละเอียด? id =

ในกรณีนี้พารามิเตอร์ชื่อแพ็กเกจคือชื่อแพ็กเกจแบบเต็มของแอ็พพลิเคชันเป้าหมายตามที่ระบุไว้ในแอ็ตทริบิวต์แพ็กเกจขององค์ประกอบรายการในไฟล์รายการของแอ็พพลิเคชัน ตัวอย่างเช่น:

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

ที่มา: http://developer.android.com/guide/publishing/publishing.html


+1 สำหรับลิงก์ นั่นดูดี. เนื่องจากฉันต้องการให้ผู้ใช้แบ่งปันฉันยังคงต้องใช้ ACTION_SEND และเพิ่มลิงก์ตลาดในข้อความของฉัน หากผู้ใช้คลิกที่มัน shoudl จะนำเขาไปที่หน้าการติดตั้ง ฟังดูดีต้องลอง แจ้งให้เราทราบหากฉันเข้าใจคุณถูกต้อง
Thomas

ใช่คุณสามารถใช้ลิงก์ตลาดในข้อความของ ACTION_SEND ได้ แต่จะใช้ได้เฉพาะเมื่อคลิกขณะอยู่บนอุปกรณ์ Android
Will Tate

1
แต่ลิงก์นี้จะไม่เปิดลิงก์ตลาดหากเราใช้ ACTION_SEND ลิงก์จะอยู่ที่นั่นเป็นข้อความธรรมดา แต่ลิงก์นี้มีประโยชน์ในการเปิดตลาดด้วย ACTION_VIEW
varun bhardwaj

13

เรียกวิธีนี้ว่า

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

เพื่อให้แน่นอนมากขึ้น

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

หรือหากคุณต้องการแบ่งปันแอปอื่น ๆ จากผู้พัฒนาของคุณ บัญชีคุณสามารถทำสิ่งนี้ได้

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

ในการกรอกชื่อแอปพลิเคชันและรหัสแอปพลิเคชันโดยอัตโนมัติคุณสามารถใช้สิ่งนี้:

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

แชร์แอปพลิเคชันที่มีชื่อคือคุณ app_name เนื้อหาคือลิงค์แอปพลิเคชันของคุณ

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

วิธีแชร์ไอคอนแอป
John dahat

4

ฉันรู้ว่าคำถามนี้ได้รับคำตอบแล้ว แต่ฉันต้องการแบ่งปันวิธีแก้ปัญหาอื่น:

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

ในที่สุดรหัสนี้ก็ใช้งานได้สำหรับฉันเพื่อเปิดไคลเอนต์อีเมลจากอุปกรณ์ Android ลองใช้ตัวอย่างข้อมูลนี้

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

วิธีที่ดีที่สุดในการตัดแอปของคุณระหว่างผู้ใช้ Google (firebase) พิสูจน์แล้วว่าเทคโนโลยีใหม่ Firebase Dynamic Link ผ่านหลายบรรทัดคุณสามารถทำให้เป็นเอกสาร https://firebase.google.com/docs/dynamic-links/ และรหัส คือ

  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

ส่วนขยาย Kotlin สำหรับการดำเนินการแบ่งปัน คุณสามารถแบ่งปันสิ่งที่คุณต้องการเช่นลิงค์

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

การใช้งาน

context.share("Check https://stackoverflow.com")
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.