एंड्रॉइड में एप्लिकेशन "लिंक" साझा करें


105

मैं चाहता हूं कि मेरा एप्लिकेशन उपयोगकर्ता अन्य उपयोगकर्ताओं को अपना एप्लिकेशन साझा करने / अनुशंसा करने में सक्षम हो। मैं ACTION_SEND इरादे का उपयोग करता हूं। मैं सादा पाठ जोड़ रहा हूँ कि कुछ की तर्ज पर: इस शांत अनुप्रयोग को स्थापित करें। लेकिन मैं उपयोगकर्ताओं को सीधे उदाहरण के लिए बाज़ार स्थान की स्थापित स्क्रीन पर जाने के लिए सक्षम करने का कोई तरीका नहीं खोज सकता। सभी मैं उन्हें एक वेब लिंक या कुछ पाठ प्रदान कर सकता हूं। दूसरे शब्दों में, मैं Android उपयोगकर्ताओं के लिए एक बहुत ही सीधा रास्ता खोज रहा हूं ताकि मेरा ऐप इंस्टॉल हो सके।

किसी भी मदद के लिए धन्यवाद / संकेत,

थॉमस

जवाबों:


267

इससे आप ईमेल, व्हाट्सएप या जो भी चुनेंगे।

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.google.com/docs/invites/android
Vahe Gharibyan

यह एक कोशिश / पकड़ ब्लॉक में क्यों लपेटा जाता है?
लुई

7
एंड्रॉइड को अपने अपडेट में इतने बदलाव करने का शौक है कि कौन जानता है कि यह कोड भविष्य के अपडेट में विफल हो जाएगा
Ton

1
@ मैं विषय और पाठ के साथ ऐप आइकन छवि कैसे भेज सकता हूं।
अरबाज़ आलम

पृष्ठभूमि के धागे पर करें, यह मुख्य धागे के लिए किसी तरह भारी है। यूजर्स को बैकग्राउंड थ्रेड पर
लगाव

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यूआरएल के लिए टैगिंग के रूप में सरल होगा , लेकिन सिर्फ उत्सुक अगर यह लाइब्रेरी में उपलब्ध है जैसे सेटलैंग या कुछ और।
किरकिंग

3
कृपया लिंक में http के बजाय हमेशा https का उपयोग करें।
ubuntudroid

20

थॉमस,

आप अपने उपयोगकर्ताओं को एक market://लिंक प्रदान करना चाहेंगे जो उन्हें सीधे आपके ऐप के विवरण पृष्ठ पर लाएगा। निम्नलिखित डेवलपर से है ।android.com:

किसी एप्लिकेशन का विवरण पृष्ठ लोड हो रहा है

Android Market में, प्रत्येक एप्लिकेशन का विवरण पृष्ठ होता है जो उपयोगकर्ताओं के लिए एप्लिकेशन का अवलोकन प्रदान करता है। उदाहरण के लिए, पृष्ठ में ऐप का एक छोटा विवरण और उपयोग में आने वाले स्क्रीन शॉट्स शामिल हैं, अगर डेवलपर द्वारा आपूर्ति की जाती है, साथ ही साथ उपयोगकर्ताओं से प्रतिक्रिया और डेवलपर के बारे में जानकारी मिलती है। विवरण पृष्ठ में एक "इंस्टॉल" बटन भी शामिल है जो उपयोगकर्ता को एप्लिकेशन के डाउनलोड / खरीद को ट्रिगर करने देता है।

यदि आप उपयोगकर्ता को किसी विशिष्ट एप्लिकेशन को संदर्भित करना चाहते हैं, तो आपका एप्लिकेशन उपयोगकर्ता को सीधे एप्लिकेशन के विवरण पृष्ठ पर ले जा सकता है। ऐसा करने के लिए, आपका एप्लिकेशन ACTION_VIEW इरादे भेजता है जिसमें इस प्रारूप में URI और क्वेरी पैरामीटर शामिल हैं:

बाजार: // details? id =?

इस मामले में, पैकेजेजेन पैरामीटर लक्ष्य अनुप्रयोग का पूरी तरह से योग्य पैकेज नाम है, जैसा कि एप्लिकेशन की मैनिफ़ेस्ट फ़ाइल में मैनिफ़ेस्ट तत्व के पैकेज विशेषता में घोषित किया गया है। उदाहरण के लिए:

बाजार: // details? id = com.example.android.jetboy

स्रोत: http://developer.android.com/guide/publishing/publishing.html


लिंक के लिए +1। वह अच्छा दिखता है। जैसा कि मैं चाहता हूं कि उपयोगकर्ता को साझा करने के लिए मुझे अभी भी ACTION_SEND का उपयोग करना होगा और अपने पाठ में बाज़ार लिंक जोड़ना होगा। यदि उपयोगकर्ता इस पर क्लिक करता है तो यह उसे स्थापित पृष्ठ पर पुनर्निर्देशित करता है। अच्छा लगता है मुझे यह कोशिश करनी होगी। मुझे पता है अगर मैं तुम्हें सही समझा।
थॉमस

हाँ, आप एक ACTION_SEND के पाठ में बाज़ार लिंक का उपयोग कर सकते हैं, यह केवल तभी काम करेगा जब Android डिवाइस पर क्लिक किया गया हो।
टेट होगा

1
लेकिन यह लिंक बाज़ार लिंक नहीं खोलेगा यदि हम ACTION_SEND का उपयोग करते हैं, तो लिंक एक साधारण पाठ के रूप में वहाँ रहेगा। लेकिन लिंक ACTION_VIEW के साथ बाज़ार खोलने में मददगार था।
वरुण भारद्वाज

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

कैसे ऐप आइकन साझा करने के लिए
जॉन 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

अंत में, यह कोड मेरे लिए एंड्रॉइड डिवाइस से ईमेल क्लाइंट खोलने के लिए काम किया जाता है। इस स्निपेट को आज़माएं।

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 (फायरबेस) ने नई तकनीक साबित की फायरबेस डायनामिक लिंक कई लाइनों के माध्यम से आप इसे बना सकते हैं यह है प्रलेखन 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

शेयर कार्रवाई के लिए कोटलिन एक्सटेंशन। आप जो चाहें लिंक साझा कर सकते हैं

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")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.