"इस ऐप को रेट करें" - फोन पर Google Play स्टोर ऐप में -link


266

मैं अपने फ़ोन में उपयोगकर्ता के Google Play स्टोर ऐप में ऐप-सूचीकरण को खोलने के लिए एक Android ऐप में "रेट दिस ऐप" -link डालना चाहता हूं।

  1. क्या कोड बनाने के लिए लिखने के लिए मैं क्या ज़रूरत है market://या http://-लिंक फ़ोन पर Google Play स्टोर ऐप में खुला?
  2. आपने कोड कहां रखा है?
  3. किसी को भी इस का एक नमूना कार्यान्वयन है?
  4. क्या आपको उस स्क्रीन को निर्दिष्ट करना होगा जहां market://या http://लिंक रखा जाएगा, और जो उपयोग करने के लिए सबसे अच्छा है - market://या http://?

यह आपके लिए आवश्यक सब कुछ है: github.com/delight-im/AppRater और आप यह समझने के लिए स्रोत कोड देख सकते हैं कि यह कैसे किया गया है।
कांव-कांव

जवाबों:


555

मैं अपने ऐप से प्ले स्टोर को निम्नलिखित कोड के साथ खोलता हूं:

    Uri uri = Uri.parse("market://details?id=" + context.getPackageName());
    Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
    // To count with Play market backstack, After pressing back button, 
    // to taken back to our application, we need to add following flags to intent. 
    goToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY |
                    Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
                    Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
    try {
        startActivity(goToMarket);
    } catch (ActivityNotFoundException e) {
        startActivity(new Intent(Intent.ACTION_VIEW,
                Uri.parse("http://play.google.com/store/apps/details?id=" + context.getPackageName())));
    }

यह आपके द्वारा पहले से खोले गए ऐप पेज के साथ प्ले स्टोर को लॉन्च करेगा। उपयोगकर्ता इसे वहां रेट कर सकता है।


2
Androidmanifest.xml में मैं इस कोड को कहां रखूं? क्या मुझे और कुछ जोड़ने की आवश्यकता है? उपयोगकर्ता द्वारा दबाए गए स्क्रीन पर वास्तविक लिंक या बटन के अनुरूप कैसे होता है? धन्यवाद
Adreno

1
आपको मैनिफ़ेस्ट में कोई कोड जोड़ने की आवश्यकता नहीं है। आपको बस इस कोड को अपने बटन / लिंक के OnClickListener के भीतर रखना है, इसलिए जब बटन पर क्लिक किया जाता है, तो कोड निष्पादित हो जाता है और प्ले स्टोर लॉन्च हो जाता है।
मिगेल.रोडेलस

61
यह समाधान Play बाजार के बैकस्टैक के साथ नहीं गिना जाता है। बैक बटन दबाने के बाद, आपको अपने आवेदन पर वापस नहीं लिया जाता है। यदि आप इसे चाहते हैं, तो इस लाइन को जोड़ें: इरादे ।addFlags (Intent.FLAG_ACTIVITY_NO -HISTORY। Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET। Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
जन मुलर

24
Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET: यह स्थिरांक API स्तर 21 में पदावनत किया गया था। API 21 के रूप में यह FLAG_ACTIVITY_NEW_OCUMENT के लिए समान रूप से पहचान करता है जिसका उपयोग इसके बजाय किया जाना चाहिए।
xnagyg

1
यदि गैर-गतिविधि जावा वर्ग से कॉल करने पर आपको संदर्भ की तरह पास करने की आवश्यकता होती है जैसे संदर्भ.स्टार्टऐक्टिविटी (goToMarket);
डीएम

47

यहाँ एक काम कर रहा है और अप टू डेट कोड :)

/*
* Start with rating the app
* Determine if the Play Store is installed on the device
*
* */
public void rateApp()
{
    try
    {
        Intent rateIntent = rateIntentForUrl("market://details");
        startActivity(rateIntent);
    }
    catch (ActivityNotFoundException e)
    {
        Intent rateIntent = rateIntentForUrl("https://play.google.com/store/apps/details");
        startActivity(rateIntent);
    }
}

private Intent rateIntentForUrl(String url)
{
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("%s?id=%s", url, getPackageName())));
    int flags = Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
    if (Build.VERSION.SDK_INT >= 21)
    {
        flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT;
    }
    else
    {
        //noinspection deprecation
        flags |= Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET;
    }
    intent.addFlags(flags);
    return intent;
}

आप जिस कोड Activityसे कॉल करना चाहते हैं उसमें कोड डाल दें ।
जब उपयोगकर्ता ऐप को रेट करने के लिए एक बटन पर क्लिक करता है, तो बस rateApp()फ़ंक्शन को कॉल करें ।


मुझे किस NuGet पैकेज को जोड़ना चाहिए, और एक व्यवहार्य प्रकार होने के usingलिए मुझे क्या नामस्थान चाहिए Intent? मुझे Android.Content मिला , लेकिन मुझे IntentXamarin फॉर्म में नुकसान हुआ है।
s3c

24

मैं हमेशा इस कोड का उपयोग करता हूं:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=PackageName")));

4
हमेशा एक लाइनर की तरह। :)
androidStud

मैं इसका उपयोग करता हूं लेकिन यह इस त्रुटि को दर्शाता है- `android.content.ActivityNotFoundException: Intent {act = android.intent.action.VIEW dat = market: // details = id = PackageName} को संभालने के लिए कोई गतिविधि नहीं मिली है? मैं क्या कर सकता हूं? ?
मीना दहेश

आप देख सकते हैं इस ?
काबिज

@Cabezas। आम तौर पर मैं फोन पर सभी मौजूद बाजार दिखाना चाहता हूं। उनमें से किस पर क्लिक करने पर, यदि मेरा ऐप मौजूद है, तो बाजार ऐप दिखाता है। तो क्या मुझे करना चाहिए?
मीना दहेश

1
@Cabezas। मैं इस कोड का उपयोग करता हूं: `कोशिश {इरादा इरादा = नया इरादा (Intent.ACTION_VIEW); intent.setData (Uri.parse ( "बाजार: // details? id = vow_note.maxsoft.com.vownote?")); intent.setData (Uri.parse ( "myket: // टिप्पणी आईडी = vow_note.maxsoft.com.vownote")); startActivity (आशय); } catch (ActivNotFoundException e1) {try {startActivity (नया इरादा (Intent.ACTION_VIEW, Uri.parse ("MARKET URL"))); startActivity (नया इरादा (Intent.ACTION_VIEW, Uri.parse ("MARKET URL")); } कैच (एक्टिविटीनॉटफाउंड एक्ससेप्शन e2) {टोस्ट।} `
मीना दहेश

18

यह तब है जब आप Google Play Store और Amazon Appstore दोनों में अपना ऐप प्रकाशित करते हैं। मैं इस मामले को भी संभालता हूं कि उपयोगकर्ताओं (विशेष रूप से चीन में) के पास ऐप स्टोर और ब्राउज़र दोनों नहीं हैं।

public void goToMyApp(boolean googlePlay) {//true if Google Play, false if Amazone Store
    try {
       startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse((googlePlay ? "market://details?id=" : "amzn://apps/android?p=") +getPackageName())));
    } catch (ActivityNotFoundException e1) {
        try {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse((googlePlay ? "http://play.google.com/store/apps/details?id=" : "http://www.amazon.com/gp/mas/dl/android?p=") +getPackageName())));
        } catch (ActivityNotFoundException e2) {
            Toast.makeText(this, "You don't have any app that can open this link", Toast.LENGTH_SHORT).show();
        }
    }
}

सवाल का जवाब हाथ में नहीं देता।

अपने ऐप की amazon app store लिस्टिंग को खोलने के लिए कोड के बारे में क्या?
isJulian00

मुझे किस NuGet पैकेज को जोड़ना चाहिए, और एक व्यवहार्य प्रकार होने के usingलिए मुझे क्या नामस्थान चाहिए Intent? मुझे Android.Content मिला , लेकिन मुझे IntentXamarin फॉर्म में नुकसान हुआ है।
s3c

10

आप पैकेजमैनेजर क्लास से हमेशा getInstalledPackages () कॉल कर सकते हैं और यह सुनिश्चित करने के लिए जांच कर सकते हैं कि मार्केट क्लास स्थापित है या नहीं। आप यह भी सुनिश्चित कर सकते हैं कि आप जो निर्माण कर रहे हैं, वह यह सुनिश्चित करने के लिए कि यह बाजार का अनुप्रयोग नहीं है, तो आप यह सुनिश्चित करने के लिए क्वेरीइंटेंट एक्टीविटी () का उपयोग कर सकते हैं । यह संभवतः वास्तव में सबसे अच्छी बात है क्योंकि इसकी सबसे अधिक लचीली और मजबूत है।

आप देख सकते हैं कि बाजार ऐप किसके द्वारा है

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://search?q=foo"));
PackageManager pm = getPackageManager();
List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);

यदि सूची में कम से कम एक प्रविष्टि है, तो बाजार का वहां होना।

आप अपने ऐप्लिकेशन के पेज पर Android Market लॉन्च करने के लिए निम्नलिखित का उपयोग कर सकते हैं, यह थोड़ा अधिक स्वचालित है:

Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("market://details?id=" + getPackageName()));
startActivity(i);

यदि आप अपने एमुलेटर पर इसका परीक्षण करना चाहते हैं, तो संभवतः आपके पास इस पर बाज़ार स्थापित नहीं है: अधिक जानकारी के लिए ये लिंक देखें:

Google Android एमुलेटर में एंड्रॉइड मार्केट को कैसे सक्षम करें

एंड्रॉइड एमुलेटर पर Google Play इंस्टॉल करना


Androidmanifest.xml में मैं इस कोड को कहां रखूं? क्या मुझे और कुछ जोड़ने की आवश्यकता है? उपयोगकर्ता द्वारा दबाए गए स्क्रीन पर वास्तविक लिंक या बटन के अनुरूप कैसे होता है? धन्यवाद
Adreno

8

मैं इस दृष्टिकोण का उपयोग उपयोगकर्ता दर को मेरी ऐप्स बनाने के लिए करता हूं:

public static void showRateDialog(final Context context) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context)
            .setTitle("Rate application")
            .setMessage("Please, rate the app at PlayMarket")
            .setPositiveButton("RATE", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if (context != null) {
                        String link = "market://details?id=";
                        try {
                            // play market available
                            context.getPackageManager()
                                    .getPackageInfo("com.android.vending", 0);
                        // not available
                        } catch (PackageManager.NameNotFoundException e) {
                            e.printStackTrace();
                            // should use browser
                            link = "https://play.google.com/store/apps/details?id=";
                        }
                        // starts external action
                        context.startActivity(new Intent(Intent.ACTION_VIEW, 
                                Uri.parse(link + context.getPackageName())));
                    }
                }
            })
            .setNegativeButton("CANCEL", null);
    builder.show();
}

यह किस लिये है? - market://details?id=मेरा ऐप लिंक इस तरह हैhttps:\\play.google.com\apps\details?id=
सागर बाल्यान

2
@ सागरबेलियन, यह गूगल प्ले मार्केट एप्लिकेशन पर आपके ऐप पेज को खोलने के लिए एक विशेष यूरी है। यदि आप लिंक के साथ गतिविधि शुरू करते हैं तो आपके द्वारा प्रदान किया गया एंड्रॉइड डिफ़ॉल्ट ब्राउज़र में आपके ऐप पेज को खोल देगा या आपको एक विकल्प देगा कि कौन सा ब्राउज़र ऐप शुरू करना है
gtgray

5

एक कोटलिन संस्करण

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

4

आप इसका उपयोग कर सकते हैं, यह मेरे लिए काम करता है

public static void showRateDialogForRate(final Context context) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context)
            .setTitle("Rate application")
            .setMessage("Please, rate the app at PlayMarket")
            .setPositiveButton("RATE", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if (context != null) {
                        ////////////////////////////////
                        Uri uri = Uri.parse("market://details?id=" + context.getPackageName());
                        Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
                        // To count with Play market backstack, After pressing back button,
                        // to taken back to our application, we need to add following flags to intent.
                        goToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY |
                                Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET |
                                Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
                        try {
                            context.startActivity(goToMarket);
                        } catch (ActivityNotFoundException e) {
                            context.startActivity(new Intent(Intent.ACTION_VIEW,
                                    Uri.parse("http://play.google.com/store/apps/details?id=" + context.getPackageName())));
                        }


                    }
                }
            })
            .setNegativeButton("CANCEL", null);
    builder.show();
}

4

स्टोर रेटिंग खेलें

 btn_rate_us.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Uri uri = Uri.parse("market://details?id=" + getPackageName());
                Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
                // To count with Play market backstack, After pressing back button,
                // to taken back to our application, we need to add following flags to intent.
                goToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY |
                        Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
                        Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
                try {
                    startActivity(goToMarket);
                } catch (ActivityNotFoundException e) {
                    startActivity(new Intent(Intent.ACTION_VIEW,
                            Uri.parse("http://play.google.com/store/apps/details?id=" + getPackageName())));
                }
            }
        });

3

एक और दृष्टिकोण जो आपके लिए काम कर सकता है वह है Linkify। यदि मेरे पास एक TextView है जो उपयोगकर्ता को ऐप को रेट करने के लिए कह रहा है, तो मैं टेक्स्ट में कुछ शब्दों को लिंक कर सकता हूं ताकि वे हाइलाइट हो जाएं और जब उपयोगकर्ता उन्हें छूता है, तो प्ले स्टोर खुल जाता है, उनकी समीक्षा के लिए तैयार:

class playTransformFilter implements TransformFilter {
   public String transformUrl(Matcher match, String url) {
        return "market://details?id=com.qwertyasd.yourapp";
   }
}

class playMatchFilter implements MatchFilter {
    public boolean acceptMatch(CharSequence s, int start, int end) {
        return true;
    }
}
text1 = (TextView) findViewById(R.id.text1);
text1.setText("Please rate it.");
final Pattern playMatcher = Pattern.compile("rate it");
Linkify.addLinks(text1, playMatcher, "", 
                   new playMatchFilter(), new playTransformFilter());

3

GetPackageName () रणनीति के आधार पर कार्यान्वयन करने वाले सभी उत्तरों के बारे में एक बिंदु यह है कि BuildConfig.APPLICATION_ID का उपयोग करना अधिक सीधे आगे हो सकता है और अच्छी तरह से काम करता है यदि आप विभिन्न एप्लिकेशन आईडी के लिए एक से अधिक एप्लिकेशन बनाने के लिए समान कोड आधार का उपयोग करते हैं (उदाहरण के लिए, सफेद लेबल उत्पाद)।


2
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.StringRes;
import android.widget.Toast;

public class PlayStoreLink {

public void checkForUpdate(Context context, int applicationId) 
{
    try {
        context.startActivity(new Intent(Intent.ACTION_VIEW,
                Uri.parse(context.getString(R.string.url_market_details)
                        + applicationId)));
    } catch (android.content.ActivityNotFoundException anfe) {
        try {
            context.startActivity(new Intent(Intent.ACTION_VIEW,
                    Uri.parse(context.getString(R.string.url_playstore_app)
                            + applicationId)));
        } catch (Exception e) {
            Toast.makeText(context,
                    R.string.install_google_play_store,
                    Toast.LENGTH_SHORT).show();
        }
    }
}

public void moreApps(Context context, @StringRes int devName) {
    try {
        context.startActivity(new Intent(Intent.ACTION_VIEW,
                Uri.parse(context.getString(R.string.url_market_search_app)
                        + context.getString(devName))));
    } catch (android.content.ActivityNotFoundException anfe) {
        try {
            context.startActivity(new Intent(Intent.ACTION_VIEW,
                    Uri.parse(context.getString(R.string.url_playstore_search_app)
                            + context.getString(devName))));
        } catch (Exception e) {
            Toast.makeText(context,
                    R.string.install_google_play_store,
                    Toast.LENGTH_SHORT).show();
        }
    }
}

public void rateApp(Context context, int applicationId) {
    try {
        Uri uri = Uri.parse(context.getString(R.string.url_market_details)
                + applicationId);
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        int flags = Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH)
            flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT;
        else
            flags |= Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET;
        intent.addFlags(flags);
        context.startActivity(intent);
    } catch (ActivityNotFoundException e) {
        checkForUpdate(context, applicationId);
    }
}
}

<string name="install_google_play_store" translatable="false">Please install google play store and then try again.</string>
<string name="url_market_details" translatable="false">market://details?id=</string>
<string name="url_playstore_app" translatable="false">https://play.google.com/store/apps/details?id=</string>
<string name="url_market_search_app" translatable="false">market://search?q=pub:</string>
<string name="url_playstore_search_app" translatable="false">http://play.google.com/store/search?q=pub:</string>
<string name="app_link" translatable="false">https://play.google.com/store/apps/details?id=</string>

devName Play Store पर Developer Account का नाम है


2

आप अपनी गतिविधि में अपने ऐप को रेट करने के लिए इस सरल कोड का उपयोग कर सकते हैं।

try {
    Uri uri = Uri.parse("market://details?id=" + getPackageName());
    Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(goToMarket);
} catch (ActivityNotFoundException e) {
    startActivity(new Intent(Intent.ACTION_VIEW,
    Uri.parse("http://play.google.com/store/apps/details?id=" + getPackageName())));
}

यह किस लिये है? - market://details?id=मेरा ऐप लिंक कुछ इस तरह हैhttps:\\play.google.com\apps\details?id=
सागर बाल्यान

@ सागरबेलियन यदि उपयोगकर्ता के पास कई ऐप बाज़ार हैं, तो यह डिफ़ॉल्ट स्टोर खोलेगा या उन्हें उपलब्ध हर दुकान के इरादे को दिखाएगा।
अवी दर्शन

2

मैं अपवाद आधारित प्रोग्रामिंग का उपयोग किए बिना इस और इस उत्तर को जोड़कर निम्नलिखित दृष्टिकोण का उपयोग करता हूं और पूर्व-एपीआई 21 इरादे ध्वज का भी समर्थन करता हूं ।

@SuppressWarnings("deprecation")
private Intent getRateIntent()
{
  String url        = isMarketAppInstalled() ? "market://details" : "https://play.google.com/store/apps/details";
  Intent rateIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("%s?id=%s", url, getPackageName())));
  int intentFlags   = Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
  intentFlags      |= Build.VERSION.SDK_INT >= 21 ? Intent.FLAG_ACTIVITY_NEW_DOCUMENT : Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET;
  rateIntent.addFlags(intentFlags);
  return rateIntent;
}

private boolean isMarketAppInstalled()
{
  Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=anyText"));
  return getPackageManager().queryIntentActivities(marketIntent, 0).size() > 0;
}


// use
startActivity(getRateIntent());

चूंकि इरादे का झंडा FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESETएपीआई 21 से हटा दिया @SuppressWarnings("deprecation")गया है, इसलिए मैं getRateIntent विधि पर टैग का उपयोग करता हूं क्योंकि मेरा ऐप लक्ष्य SDK एपीआई 21 से नीचे है।


मैंने उनकी वेबसाइट पर सुझाए गए आधिकारिक Google तरीके को भी आज़माया (6 दिसंबर 2019)। अगर मैं प्ले स्टोर ऐप इंस्टॉल नहीं करता हूं तो मैं इसे देख सकता हूं।

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

0

आप गतिविधि वर्ग में एक विधि की घोषणा करें। फिर नीचे दिए गए कोड को कॉपी और पेस्ट करें।

private void OpenAppInPlayStore(){

    Uri uri = Uri.parse("market://details?id=" + this.getPackageName());
    Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
    // To count with Play market backstack, After pressing back button,
    // to taken back to our application, we need to add following flags to intent.
    goToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY |
            Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
            Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
    try {
        startActivity(goToMarket);
    } catch (ActivityNotFoundException e) {
        startActivity(new Intent(Intent.ACTION_VIEW,
                Uri.parse("http://play.google.com/store/apps/details?id=" + this.getPackageName())));
    }

}

अब इस विधि को अपने कोड से कहीं से भी कॉल करें।

मेरी व्यावहारिक परियोजना से नीचे की छवि का पालन करें।

यहां छवि विवरण दर्ज करें

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