Google Play Store को सीधे अपने Android एप्लिकेशन से कैसे खोलें?


569

मैंने निम्न कोड का उपयोग करके Google Play स्टोर खोला है

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

लेकिन यह मुझे विकल्प (ब्राउज़र / प्ले स्टोर) का चयन करने के लिए एक पूर्ण एक्शन दृश्य दिखाता है। मुझे सीधे प्ले स्टोर में एप्लिकेशन खोलने की आवश्यकता है।


क्या इससे आपके सवाल का जवाब मिलता है? Google में "इस ऐप को रेट करें"
Yoav Feuerstein

जवाबों:


1436

आप market://उपसर्ग का उपयोग करके ऐसा कर सकते हैं ।

final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object
try {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
} catch (android.content.ActivityNotFoundException anfe) {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
}

हम try/catchयहां एक ब्लॉक का उपयोग करते हैं क्योंकि Exceptionअगर प्ले स्टोर को लक्ष्य डिवाइस पर स्थापित नहीं किया गया है तो उसे फेंक दिया जाएगा।

नोट : कोई भी ऐप market://details?id=<appId>उड़ी को संभालने में सक्षम के रूप में पंजीकृत कर सकता है , यदि आप विशेष रूप से Google Play को Berťák उत्तर की जांच करना चाहते हैं


53
यदि आप सभी डेवलपर ऐप्स का उपयोग करना चाहते हैं market://search?q=pub:"+devNameऔरhttp://play.google.com/store/search?q=pub:"+devName
Stefano Munarini

4
यह समाधान काम नहीं करता है, अगर कुछ एप्लिकेशन "बाजार: //" योजना के साथ इरादे फिल्टर का उपयोग करता है। मेरा उत्तर देखें कि Google Play और केवल Google Play एप्लिकेशन को कैसे खोलें (या अगर जीपी मौजूद नहीं है तो वेबब्रोसर)। :-)
बेरोक

18
ग्रेडल बिल्ड सिस्टम का उपयोग करने वाली परियोजनाओं के लिए, appPackageNameवास्तव में है BuildConfig.APPLICATION_ID। स्मृति रिसाव के जोखिम को कम करने के लिए कोई Context/ Activityनिर्भरता नहीं ।
क्रिश्चियन गार्सिया

3
आशय को लॉन्च करने के लिए आपको अभी भी संदर्भ की आवश्यकता है।
संदर्भ। स्टार्टअक्टिविटी

2
यह समाधान मानता है कि वेब ब्राउज़र खोलने का इरादा है। यह हमेशा सच नहीं होता (जैसे एंड्रॉइड टीवी पर) इसलिए सतर्क रहें। आप क्या करना है, यह निर्धारित करने के लिए आप इरादे का उपयोग कर सकते हैं। समाधान (getPackageManager ())।
कोडा

161

यहां कई उत्तर Uri.parse("market://details?id=" + appPackageName)) Google Play को खोलने के लिए उपयोग करने का सुझाव देते हैं , लेकिन मुझे लगता है कि यह वास्तव में अपर्याप्त है:

कुछ तृतीय-पक्ष अनुप्रयोग "market://"परिभाषित किए गए योजना के साथ अपने स्वयं के इरादे-फ़िल्टर का उपयोग कर सकते हैं , इस प्रकार वे Google Play के बजाय उरई को आपूर्ति कर सकते हैं (मैंने इस स्थिति को egSnapPea एप्लिकेशन के साथ अनुभव किया है)। सवाल यह है कि "Google Play Store को कैसे खोलें?", इसलिए मैं मानता हूं कि आप कोई अन्य एप्लिकेशन नहीं खोलना चाहते हैं। कृपया यह भी ध्यान दें, जैसे कि ऐप रेटिंग केवल GP स्टोर ऐप आदि में ही प्रासंगिक है ...

Google Play और केवल Google Play को खोलने के लिए मैं इस पद्धति का उपयोग करता हूं:

public static void openAppRating(Context context) {
    // you can also use BuildConfig.APPLICATION_ID
    String appId = context.getPackageName();
    Intent rateIntent = new Intent(Intent.ACTION_VIEW,
        Uri.parse("market://details?id=" + appId));
    boolean marketFound = false;

    // find all applications able to handle our rateIntent
    final List<ResolveInfo> otherApps = context.getPackageManager()
        .queryIntentActivities(rateIntent, 0);
    for (ResolveInfo otherApp: otherApps) {
        // look for Google Play application
        if (otherApp.activityInfo.applicationInfo.packageName
                .equals("com.android.vending")) {

            ActivityInfo otherAppActivity = otherApp.activityInfo;
            ComponentName componentName = new ComponentName(
                    otherAppActivity.applicationInfo.packageName,
                    otherAppActivity.name
                    );
            // make sure it does NOT open in the stack of your activity
            rateIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            // task reparenting if needed
            rateIntent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            // if the Google Play was already open in a search result
            //  this make sure it still go to the app page you requested
            rateIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            // this make sure only the Google Play app is allowed to
            // intercept the intent
            rateIntent.setComponent(componentName);
            context.startActivity(rateIntent);
            marketFound = true;
            break;

        }
    }

    // if GP not present on device, open web browser
    if (!marketFound) {
        Intent webIntent = new Intent(Intent.ACTION_VIEW,
            Uri.parse("https://play.google.com/store/apps/details?id="+appId));
        context.startActivity(webIntent);
    }
}

मुद्दा यह है कि जब Google Play के बगल में अधिक एप्लिकेशन हमारे इरादे को खोल सकते हैं, तो ऐप-चयनकर्ता संवाद छोड़ दिया जाता है और सीधे जीपी ऐप शुरू किया जाता है।

अद्यतन: कभी-कभी ऐसा लगता है कि यह केवल जीपी ऐप को खोलता है, ऐप के प्रोफाइल को खोले बिना। जैसा कि ट्रेवरवेल ने अपनी टिप्पणी में सुझाव दिया था, Intent.FLAG_ACTIVITY_CLEAR_TOPसमस्या को ठीक कर सकता है। (मैंने अभी तक खुद इसका परीक्षण नहीं किया था ...)

क्या करता है समझने के लिए यह उत्तर देखें Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED


4
जबकि यह अच्छा है यह वर्तमान Google Play बिल्ड के साथ भी अविश्वसनीय लगता है, यदि आप Google Play पर कोई अन्य एप्लिकेशन पेज दर्ज करते हैं तो इस कोड को ट्रिगर करें, यह Google Play को केवल खोलेगा लेकिन आपके ऐप पर नहीं जाएगा।
राशि

2
@zoltish, मैंने Intent.FLAG_ACTIVITY_CLEAR_TOP को झंडे में शामिल किया है और यह समस्या को ठीक करने के लिए लगता है
TrevorWiley

मैंने Intent.FLAG_ACTIVITY_CLEAR_TOP का उपयोग किया है Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED लेकिन काम नहीं। प्ले स्टोर का कोई भी नया इंस्टा ओपन नहीं
प्रवीण कुमार वर्मा

3
क्या होता है यदि आप rateIntent.setPackage("com.android.vending")सुनिश्चित करें कि PlayStore ऐप इस इरादे को संभालने वाला है, बजाय इस सभी कोड के?
dum4ll3

3
@ dum4ll3 मुझे लगता है कि आप कर सकते हैं, लेकिन यह कोड इस बात की भी जाँच करता है कि Google Play ऐप इंस्टॉल है या नहीं। यदि आप इसकी जाँच नहीं करते हैं, तो आपको गतिविधि के लिए पकड़ने की आवश्यकता है
।NotFound

81

एंड्रॉइड डेवलपर आधिकारिक लिंक पर जाएं चरण-दर-चरण ट्यूटोरियल देखें और प्ले स्टोर से अपने एप्लिकेशन पैकेज के लिए कोड प्राप्त करें यदि मौजूद है या प्ले स्टोर एप्लिकेशन मौजूद नहीं हैं तो वेब ब्राउज़र से एप्लिकेशन खोलें।

Android डेवलपर आधिकारिक लिंक

https://developer.android.com/distribute/tools/promote/linking.html

एक आवेदन पृष्ठ से जोड़ना

एक वेब साइट से: https://play.google.com/store/apps/details?id=<package_name>

एंड्रॉइड ऐप से: market://details?id=<package_name>

उत्पाद सूची से लिंक करना

एक वेब साइट से: https://play.google.com/store/search?q=pub:<publisher_name>

एंड्रॉइड ऐप से: market://search?q=pub:<publisher_name>

एक खोज परिणाम से जोड़ना

एक वेब साइट से: https://play.google.com/store/search?q=<search_query>&c=apps

एंड्रॉइड ऐप से: market://search?q=<seach_query>&c=apps


बाजार का उपयोग करना: // अब उपसर्ग की अनुशंसा नहीं की गई है (आपके द्वारा पोस्ट किए गए लिंक की जांच करें)
ग्रेग

@GregEnnis जहां आप उस बाजार को देखते हैं: // उपसर्ग की सिफारिश नहीं की जाती है?
लोकी

@loki मुझे लगता है कि यह मुद्दा यह है कि यह सुझाव के रूप में सूचीबद्ध नहीं है। यदि आप उस पृष्ठ को शब्द के लिए खोजते हैं तो आपको marketकोई समाधान नहीं मिलेगा। मुझे लगता है कि नया तरीका एक अधिक सामान्य इरादे डेवलपर .android.com/distribute/marketing-tools/… को फायर करना है । प्ले स्टोर ऐप के अधिक हाल के संस्करणों में संभवतः इस URI के लिए एक इरादा फिल्टर हैhttps://play.google.com/store/apps/details?id=com.example.android
tir38

25

इसे इस्तेमाल करे

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=com.example.android"));
startActivity(intent);

1
Google Play को स्वतंत्र रूप से कैसे खोलें (उसी ऐप में एक नए दृश्य में एम्बेड नहीं किया गया) कृपया मेरा उत्तर जांचें।
कोड ४ जेहोन ३

21

यदि आप वास्तव में Google Play (या अन्य कोई अन्य) खोलना चाहते हैं, तो उपरोक्त सभी उत्तर उसी ऐप के नए दृश्य में Google Play को खोलते हैं:

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.android.vending");

// package name and activity
ComponentName comp = new ComponentName("com.android.vending",
                                       "com.google.android.finsky.activities.LaunchUrlHandlerActivity"); 
launchIntent.setComponent(comp);

// sample to open facebook app
launchIntent.setData(Uri.parse("market://details?id=com.facebook.katana"));
startActivity(launchIntent);

महत्वपूर्ण हिस्सा यह है कि वास्तव में Google play या किसी अन्य ऐप को स्वतंत्र रूप से खोलता है।

मैंने जो देखा है उसमें से अधिकांश अन्य उत्तरों के दृष्टिकोण का उपयोग करता है और यह वह नहीं था जिसकी मुझे उम्मीद थी कि इससे किसी को मदद मिलती है।

सादर।


क्या है this.cordova? चर घोषणाएं कहां हैं? कहां callbackघोषित और परिभाषित है?
एरिक

यह एक कॉर्डोवा प्लगइन का हिस्सा है, मुझे नहीं लगता कि यह वास्तव में प्रासंगिक है ... आपको सिर्फ पैकेज मैनजर की एक उदाहरण की आवश्यकता है और एक नियमित तरीके से एक गतिविधि शुरू करना है लेकिन यह github.com/lampaa का कॉर्डोवा प्लगइन है जिसे मैंने ओवरवोट किया यहाँ github.com/code4jhon/org.apache.cordova.startapp
code4jhon

4
मेरा कहना बस इतना है कि, यह कोड वास्तव में ऐसा कुछ नहीं है जिसे लोग केवल उपयोग के लिए अपने स्वयं के ऐप में पोर्ट कर सकते हैं। वसा को ट्रिम करना और सिर्फ मूल विधि को छोड़ना भविष्य के पाठकों के लिए उपयोगी होगा।
एरिक

हां, मैं समझता हूं ... अभी मैं हाइब्रिड ऐप्स पर हूं। वास्तव में पूरी तरह से देशी कोड का परीक्षण नहीं कर सकते। लेकिन मुझे लगता है कि यह विचार है। अगर मेरे पास मौका है तो मैं सटीक देशी लाइनें जोड़ूंगा।
code4jhon

उम्मीद है कि यह
code4jhon

14

आप यह देख सकते हैं कि क्या Google Play Store ऐप इंस्टॉल है और यदि ऐसा है, तो आप "बाज़ार: //" प्रोटोकॉल का उपयोग कर सकते हैं ।

final String my_package_name = "........."  // <- HERE YOUR PACKAGE NAME!!
String url = "";

try {
    //Check whether Google Play store is installed or not:
    this.getPackageManager().getPackageInfo("com.android.vending", 0);

    url = "market://details?id=" + my_package_name;
} catch ( final Exception e ) {
    url = "https://play.google.com/store/apps/details?id=" + my_package_name;
}


//Open the app page in Google Play store:
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
startActivity(intent);

1
Google Play को स्वतंत्र रूप से कैसे खोलें (उसी ऐप में एक नए दृश्य में एम्बेड नहीं किया गया) कृपया मेरा उत्तर जांचें।
कोड ४ जेहोन ३

12

जबकि एरिक का जवाब सही है और बर्क का कोड भी काम करता है। मुझे लगता है कि यह दोनों अधिक सुरुचिपूर्ण ढंग से जोड़ता है।

try {
    Intent appStoreIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName));
    appStoreIntent.setPackage("com.android.vending");

    startActivity(appStoreIntent);
} catch (android.content.ActivityNotFoundException exception) {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
}

उपयोग करके setPackage, आप डिवाइस को प्ले स्टोर का उपयोग करने के लिए मजबूर करते हैं। यदि कोई प्ले स्टोर स्थापित नहीं है, तो Exceptionपकड़ा जाएगा।


How do come के https://play.google.com/store/apps/details?id=बजाय आधिकारिक डॉक्स का उपयोग market:करें? डेवलपर
सर्व-इन

मुझे यकीन नहीं है, लेकिन मुझे लगता है कि यह एक शॉर्टकट है जो एंड्रॉइड " play.google.com/store/apps " में अनुवाद करता है । आप शायद अपवाद के रूप में "बाजार: //" का उपयोग कर सकते हैं।
M3-n50


7

तुम कर सकते हो:

final Uri marketUri = Uri.parse("market://details?id=" + packageName);
startActivity(new Intent(Intent.ACTION_VIEW, marketUri));

यहाँ संदर्भ लें :

आप इस प्रश्न के स्वीकृत उत्तर में वर्णित दृष्टिकोण को भी आज़मा सकते हैं: यह निर्धारित नहीं कर सकते कि Google play store स्थापित है या नहीं, Android डिवाइस पर है


मैंने इस कोड के साथ पहले ही प्रयास कर लिया है, यह ब्राउज़र / प्ले स्टोर का चयन करने का विकल्प भी दिखाता है, क्योंकि मेरे डिवाइस ने दोनों ऐप (google play store / ब्राउज़र) इंस्टॉल किए हैं।
राजेश कुमार

Google Play को स्वतंत्र रूप से कैसे खोलें (उसी ऐप में एक नए दृश्य में एम्बेड नहीं किया गया) कृपया मेरा उत्तर जांचें।
कोड ४ जेहोन ३

7

पार्टी में बहुत देर से आधिकारिक डॉक्स यहाँ हैं। और कोड वर्णित है

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

जैसे ही आप इस आशय को कॉन्फ़िगर करते हैं, पास "com.android.vending"हो जाते हैं Intent.setPackage()ताकि उपयोगकर्ता आपके ऐप के विवरण को चॉसर के बजाय Google Play Store ऐप में देखें । KOTLIN के लिए

val intent = Intent(Intent.ACTION_VIEW).apply {
    data = Uri.parse(
            "https://play.google.com/store/apps/details?id=com.example.android")
    setPackage("com.android.vending")
}
startActivity(intent)

यदि आपने Google Play झटपट का उपयोग करके एक इंस्टेंट ऐप प्रकाशित किया है, तो आप ऐप को निम्नानुसार लॉन्च कर सकते हैं:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri.Builder uriBuilder = Uri.parse("https://play.google.com/store/apps/details")
    .buildUpon()
    .appendQueryParameter("id", "com.example.android")
    .appendQueryParameter("launch", "true");

// Optional parameters, such as referrer, are passed onto the launched
// instant app. You can retrieve these parameters using
// Activity.getIntent().getData().
uriBuilder.appendQueryParameter("referrer", "exampleCampaignId");

intent.setData(uriBuilder.build());
intent.setPackage("com.android.vending");
startActivity(intent);

KOTLIN के लिए

val uriBuilder = Uri.parse("https://play.google.com/store/apps/details")
        .buildUpon()
        .appendQueryParameter("id", "com.example.android")
        .appendQueryParameter("launch", "true")

// Optional parameters, such as referrer, are passed onto the launched
// instant app. You can retrieve these parameters using Activity.intent.data.
uriBuilder.appendQueryParameter("referrer", "exampleCampaignId")

val intent = Intent(Intent.ACTION_VIEW).apply {
    data = uriBuilder.build()
    setPackage("com.android.vending")
}
startActivity(intent)

मुझे लगता है, यह गलत है, कम से कम, Uri.parse("https://play.google.com/store/apps/details?id=। कुछ उपकरणों पर यह Play Market के बजाय वेब-ब्राउज़र खोलता है।
कूलमाइंड

सभी कोड आधिकारिक डॉक्स से लिए गए हैं। लिंक भी एक त्वरित संदर्भ के लिए यहां वर्णित उत्तर कोड में संलग्न है।
हुसैन कासिम

@CoolMind इसका कारण शायद यह है कि उन उपकरणों में Play Store ऐप का एक पुराना संस्करण है, जिसमें URI से मेल खाने वाला आशय फ़िल्टर नहीं है।
tir38

@ tir38, शायद। हो सकता है कि उनके पास Google Play सेवाएँ न हों या उनमें अधिकृत न हों, मुझे याद नहीं है।
कूलमैन्ड

6

जैसे ही आधिकारिक डॉक्स का उपयोग https://होता है market://, यह कोड पुन: उपयोग के साथ एरिक और एम 3-एन 50 के उत्तर को जोड़ती है (अपने आप को दोहराएं नहीं):

Intent intent = new Intent(Intent.ACTION_VIEW)
    .setData(Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()));
try {
    startActivity(new Intent(intent)
                  .setPackage("com.android.vending"));
} catch (android.content.ActivityNotFoundException exception) {
    startActivity(intent);
}

यह GPlay ऐप के साथ खोलने की कोशिश करता है यदि यह मौजूद है और डिफ़ॉल्ट रूप से वापस आ जाता है।


5

उपयोग के लिए तैयार समाधान:

public class GoogleServicesUtils {

    public static void openAppInGooglePlay(Context context) {
        final String appPackageName = context.getPackageName();
        try {
            context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
        } catch (android.content.ActivityNotFoundException e) { // if there is no Google Play on device
            context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
        }
    }

}

एरिक के जवाब के आधार पर।


1
क्या यह आपके लिए काम करता है? यह मुख्य Google Play पेज खोलता है, मेरे ऐप का पेज नहीं।
वायलेट जिराफ

4

Kotlin:

एक्सटेंशन:

fun Activity.openAppInGooglePlay(){

val appId = BuildConfig.APPLICATION_ID
try {
    this.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$appId")))
} catch (anfe: ActivityNotFoundException) {
    this.startActivity(
        Intent(
            Intent.ACTION_VIEW,
            Uri.parse("https://play.google.com/store/apps/details?id=$appId")
        )
    )
}}

तरीका:

    fun openAppInGooglePlay(activity:Activity){

        val appId = BuildConfig.APPLICATION_ID
        try {
            activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$appId")))
        } catch (anfe: ActivityNotFoundException) {
            activity.startActivity(
                Intent(
                    Intent.ACTION_VIEW,
                    Uri.parse("https://play.google.com/store/apps/details?id=$appId")
                )
            )
        }
    }

3

अगर आप अपने ऐप से Google Play स्टोर खोलना चाहते हैं तो इस कमांड निर्देश का उपयोग करें: market://details?gotohome=com.yourAppNameयह आपके ऐप के Google Play स्टोर पेज को खोलेगा।

किसी विशिष्ट प्रकाशक द्वारा सभी एप्लिकेशन दिखाएं

अपने शीर्षक या विवरण पर क्वेरी का उपयोग करने वाले एप्लिकेशन खोजें

संदर्भ: https://tricklio.com/market-details-gotohome-1/


3

Kotlin

fun openAppInPlayStore(appPackageName: String) {
    try {
        startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$appPackageName")))
    } catch (exception: android.content.ActivityNotFoundException) {
        startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=$appPackageName")))
    }
}

2
public void launchPlayStore(Context context, String packageName) {
    Intent intent = null;
    try {
            intent = new Intent(Intent.ACTION_VIEW);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setData(Uri.parse("market://details?id=" + packageName));
            context.startActivity(intent);
        } catch (android.content.ActivityNotFoundException anfe) {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + packageName)));
        }
    }

2

इस उद्देश्य के लिए मेरा कोटलिन एन्टेंशन फंक्शन

fun Context.canPerformIntent(intent: Intent): Boolean {
        val mgr = this.packageManager
        val list = mgr.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
        return list.size > 0
    }

और आपकी गतिविधि में

val uri = if (canPerformIntent(Intent(Intent.ACTION_VIEW, Uri.parse("market://")))) {
            Uri.parse("market://details?id=" + appPackageName)
        } else {
            Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)
        }
        startActivity(Intent(Intent.ACTION_VIEW, uri))

2

यहाँ ऊपर दिए गए उत्तरों में से अंतिम कोड है जो पहले Google play store ऐप और विशेष रूप से play store का उपयोग करके ऐप को खोलने का प्रयास करता है, यदि यह विफल रहता है, तो यह वेब संस्करण का उपयोग करके एक्शन व्यू शुरू करेगा: क्रेडिट @ @, @Jonathan Caballero

public void goToPlayStore() {
        String playStoreMarketUrl = "market://details?id=";
        String playStoreWebUrl = "https://play.google.com/store/apps/details?id=";
        String packageName = getActivity().getPackageName();
        try {
            Intent intent =  getActivity()
                            .getPackageManager()
                            .getLaunchIntentForPackage("com.android.vending");
            if (intent != null) {
                ComponentName androidComponent = new ComponentName("com.android.vending",
                        "com.google.android.finsky.activities.LaunchUrlHandlerActivity");
                intent.setComponent(androidComponent);
                intent.setData(Uri.parse(playStoreMarketUrl + packageName));
            } else {
                intent = new Intent(Intent.ACTION_VIEW, Uri.parse(playStoreMarketUrl + packageName));
            }
            startActivity(intent);
        } catch (ActivityNotFoundException e) {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(playStoreWebUrl + packageName));
            startActivity(intent);
        }
    }

2

यह लिंक बाज़ार में स्वचालित रूप से ऐप खोलेगा: // यदि आप एंड्रॉइड पर हैं और पीसी में हैं तो ब्राउज़र में।

https://play.app.goo.gl/?link=https://play.google.com/store/apps/details?id=com.app.id&ddl=1&pcampaignid=web_ddl_1

क्या मतलब? क्या आपने मेरे समाधान की कोशिश की? इसने मेरे लिए काम किया।
निकोले शिंदरोव

वास्तव में मेरे कार्य में, एक वेबव्यू है और वेबव्यू में मुझे किसी भी URL को लोड करना है। लेकिन इसमें अगर कोई प्लेस्टोर ओपन है तो यह ओपन प्लेस्टोर बटन दिखाता है। इसलिए मुझे उस बटन के क्लिक पर ऐप खोलना होगा। यह किसी भी एप्लिकेशन के लिए गतिशील होगा, इसलिए मैं कैसे प्रबंधित कर सकता हूं?
hpAndro

बस लिंक का प्रयास करेंhttps://play.app.goo.gl/?link=https://play.google.com/store/apps/details?id=com.app.id&ddl=1&pcampaignid=web_ddl_1
निकोले शिंदारोव

1

मैंने बेरेक और स्टेफानो मुनारिनी दोनों को एक हाइब्रिड समाधान बनाने के लिए उत्तर दिया है जो इस ऐप और शो मोर ऐप परिदृश्य दोनों को संभालता है।

        /**
         * This method checks if GooglePlay is installed or not on the device and accordingly handle
         * Intents to view for rate App or Publisher's Profile
         *
         * @param showPublisherProfile pass true if you want to open Publisher Page else pass false to open APp page
         * @param publisherID          pass Dev ID if you have passed PublisherProfile true
         */
        public void openPlayStore(boolean showPublisherProfile, String publisherID) {

            //Error Handling
            if (publisherID == null || !publisherID.isEmpty()) {
                publisherID = "";
                //Log and continue
                Log.w("openPlayStore Method", "publisherID is invalid");
            }

            Intent openPlayStoreIntent;
            boolean isGooglePlayInstalled = false;

            if (showPublisherProfile) {
                //Open Publishers Profile on PlayStore
                openPlayStoreIntent = new Intent(Intent.ACTION_VIEW,
                        Uri.parse("market://search?q=pub:" + publisherID));
            } else {
                //Open this App on PlayStore
                openPlayStoreIntent = new Intent(Intent.ACTION_VIEW,
                        Uri.parse("market://details?id=" + getPackageName()));
            }

            // find all applications who can handle openPlayStoreIntent
            final List<ResolveInfo> otherApps = getPackageManager()
                    .queryIntentActivities(openPlayStoreIntent, 0);
            for (ResolveInfo otherApp : otherApps) {

                // look for Google Play application
                if (otherApp.activityInfo.applicationInfo.packageName.equals("com.android.vending")) {

                    ActivityInfo otherAppActivity = otherApp.activityInfo;
                    ComponentName componentName = new ComponentName(
                            otherAppActivity.applicationInfo.packageName,
                            otherAppActivity.name
                    );
                    // make sure it does NOT open in the stack of your activity
                    openPlayStoreIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    // task reparenting if needed
                    openPlayStoreIntent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                    // if the Google Play was already open in a search result
                    //  this make sure it still go to the app page you requested
                    openPlayStoreIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    // this make sure only the Google Play app is allowed to
                    // intercept the intent
                    openPlayStoreIntent.setComponent(componentName);
                    startActivity(openPlayStoreIntent);
                    isGooglePlayInstalled = true;
                    break;

                }
            }
            // if Google Play is not Installed on the device, open web browser
            if (!isGooglePlayInstalled) {

                Intent webIntent;
                if (showPublisherProfile) {
                    //Open Publishers Profile on web browser
                    webIntent = new Intent(Intent.ACTION_VIEW,
                            Uri.parse("http://play.google.com/store/search?q=pub:" + getPackageName()));
                } else {
                    //Open this App on web browser
                    webIntent = new Intent(Intent.ACTION_VIEW,
                            Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()));
                }
                startActivity(webIntent);
            }
        }

प्रयोग

  • प्रकाशक प्रोफाइल खोलने के लिए
   @OnClick(R.id.ll_more_apps)
        public void showMoreApps() {
            openPlayStore(true, "Hitesh Sahu");
        }
  • PlayStore पर ऐप पेज खोलने के लिए
@OnClick(R.id.ll_rate_this_app)
public void openAppInPlayStore() {
    openPlayStore(false, "");
}

आईडी सुझाव है कि इस कोड को छोटे तरीकों में विभाजित करें। इस स्पेगेटी में महत्वपूर्ण कोड ढूंढना मुश्किल है :) प्लस आप "com.android.vending" के लिए जाँच कर रहे हैं । com.google.market के
Aetherna

1

लोग, यह मत भूलो कि तुम वास्तव में इससे कुछ और प्राप्त कर सकते हो। मेरा मतलब है कि उदाहरण के लिए UTM ट्रैकिंग। https://developers.google.com/analytics/devguides/collection/android/v4/campaigns

public static final String MODULE_ICON_PACK_FREE = "com.example.iconpack_free";
public static final String APP_STORE_URI =
        "market://details?id=%s&referrer=utm_source=%s&utm_medium=app&utm_campaign=plugin";
public static final String APP_STORE_GENERIC_URI =
        "https://play.google.com/store/apps/details?id=%s&referrer=utm_source=%s&utm_medium=app&utm_campaign=plugin";

try {
    startActivity(new Intent(
        Intent.ACTION_VIEW,
        Uri.parse(String.format(Locale.US,
            APP_STORE_URI,
            MODULE_ICON_PACK_FREE,
            getPackageName()))).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
} catch (android.content.ActivityNotFoundException anfe) {
    startActivity(new Intent(
        Intent.ACTION_VIEW,
        Uri.parse(String.format(Locale.US,
            APP_STORE_GENERIC_URI,
            MODULE_ICON_PACK_FREE,
            getPackageName()))).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
}

1

फॉलबैक और करंट सिंटैक्स के साथ एक कोटलिन जेल

 fun openAppInPlayStore() {
    val uri = Uri.parse("market://details?id=" + context.packageName)
    val goToMarketIntent = Intent(Intent.ACTION_VIEW, uri)

    var flags = Intent.FLAG_ACTIVITY_NO_HISTORY or Intent.FLAG_ACTIVITY_MULTIPLE_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
    flags = if (Build.VERSION.SDK_INT >= 21) {
        flags or Intent.FLAG_ACTIVITY_NEW_DOCUMENT
    } else {
        flags or Intent.FLAG_ACTIVITY_CLEAR_TASK
    }

    goToMarketIntent.addFlags(flags)

    try {
        startActivity(context, goToMarketIntent, null)
    } catch (e: ActivityNotFoundException) {
        val intent = Intent(Intent.ACTION_VIEW,
                Uri.parse("http://play.google.com/store/apps/details?id=" + context.packageName))

        startActivity(context, intent, null)
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.