android - مجاني - متجر العاب




كيف يتم فتح متجر Google Play مباشرة من تطبيق Android؟ (10)

إذا كنت تريد فتح متجر Google Play من تطبيقك ، فاستخدم هذا الأمر directy: market://details?gotohome=com.yourAppName ، سيفتح صفحات متجر Google Play لتطبيقك.

عرض جميع التطبيقات من قبل ناشر محدد

ابحث عن التطبيقات التي تستخدم Query على عنوانها أو وصفها

المرجع: https://tricklio.com/market-details-gotohome-1/

لقد فتحت متجر google play باستخدام رمز follwing

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

لكنه يوضح لي "عرض اكمل" لتحديد الخيار (المتصفح / متجر اللعب). أحتاج إلى فتح التطبيق في playstore مباشرة.


استخدام السوق: //

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + my_packagename));

بلدي entting وظيفة kotlin لهذا الغرض

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

جرب هذا

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

في حين أن إجابة إيريك صحيحة ، ويعمل كود Berťák أيضًا. أعتقد أن هذا يجمع بين الأناقة.

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 ، فإنك تجبر الجهاز على استخدام متجر Play. إذا لم يتم تثبيت متجر Play ، فسيتم Exception .


في ما يلي الشفرة النهائية من الإجابات أعلاه التي تحاول أولاً فتح التطبيق باستخدام تطبيق متجر Google Play ولا سيما تشغيل المتجر ، إذا فشلت ، فسيبدأ عرض الإجراء باستخدام إصدار الويب: Credits toEric،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);
        }
    }

يمكنك التحقق مما إذا كان تطبيق متجر Google Play مثبتًا ، وإذا كان الأمر كذلك ، فيمكنك استخدام بروتوكول "السوق: //" .

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

يمكنك القيام بذلك باستخدام market:// prefix .

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 إذا لم يتم تثبيت متجر Play على الجهاز الهدف.

ملاحظة : يمكن لأي تطبيق تسجيل قدرته على التعامل مع market://details?id=<appId> Uri ، إذا كنت تريد استهداف Google Play تحديدًا ، فتحقق من إجابة Berťák


تقترح العديد من الإجابات هنا استخدام Uri.parse("market://details?id=" + appPackageName)) لفتح Google Play ، ولكنني أعتقد أنه غير كاف في الواقع:

يمكن لبعض تطبيقات الطرف الثالث استخدام مرشحات intent الخاصة بها مع تعريف "market://" ، وبالتالي يمكنهم معالجة Uri الموردة بدلاً من Google Play (لقد واجهت هذا الموقف مع تطبيق egSnapPea). السؤال هو "كيفية فتح متجر Google Play؟" ، لذلك أفترض ، أنك لا تريد فتح أي تطبيق آخر. يرجى أيضًا ملاحظة أن تقييم التطبيق على سبيل المثال ملائم فقط في تطبيق متجر GP ... إلخ.

لفتح Google Play AND ONLY 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 من فتح هدفنا ، يتم تخطي مربع حوار التطبيق المحدد وبدأ تطبيق GP مباشرة.

تحديث: في بعض الأحيان يبدو أنه يفتح تطبيق GP فقط ، دون فتح ملف تعريف التطبيق. كما اقترح TrevorWiley في تعليقه ، يمكن أن يقوم Intent.FLAG_ACTIVITY_CLEAR_TOP بإصلاح المشكلة. (لم أختبرها بنفسي بعد ...)

انظر هذا الجواب لفهم ما يفعله Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED .


جميع الإجابات المذكورة أعلاه تفتح 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