I know that is possible to open my app (based on package name) in Google Play商店,但是在华为AppGallery中该如何做?

最佳答案

在华为应用程序库中打开您的应用程序类似于打开Goog​​le Play商店:

华为应用程序库使用其自己的方案appmarket://:

  • 方案: appmarket://
  • 软件包: com.huawei.appmarket

  • vs. Google Play商店:
  • 方案: market://
  • 软件包: com.android.vending

  • 这是华为应用程序库的摘录:
    private void startHuaweiAppGallery() {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("appmarket://details?id=" + getPackageName()));
        List<ResolveInfo> otherApps = getPackageManager().queryIntentActivities(intent, 0);
    
        boolean agFound = false;
    
        for (ResolveInfo app : otherApps) {
            if (app.activityInfo.applicationInfo.packageName.equals("com.huawei.appmarket")) {
                ComponentName psComponent = new ComponentName(app.activityInfo.applicationInfo.packageName, app.activityInfo.name);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.setComponent(psComponent);
                startActivity(intent);
    
                agFound = true;
                break;
            }
        }
    
        //Optional, Or copy the Google Play Store URL here (See below)
        if (!agFound) {
            //Your Huawei app ID can be found in the Huawei developer console
            final string HUAWEI_APP_ID = "100864605";
    
            //ex. https://appgallery.cloud.huawei.com/marketshare/app/C100864605
            intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://appgallery.cloud.huawei.com/marketshare/app/C" + HUAWEI_APP_ID));
            startActivity(intent);
        }
    }
    

    这是 Google Play的代码段:
    private void startGooglePlay() {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getPackageName()));
        List<ResolveInfo> otherApps = getPackageManager().queryIntentActivities(intent, 0);
    
        boolean psFound = false;
    
        for (ResolveInfo app : otherApps) {
            if (app.activityInfo.applicationInfo.packageName.equals("com.android.vending")) {
                ComponentName psComponent = new ComponentName(app.activityInfo.applicationInfo.packageName, app.activityInfo.name);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.setComponent(psComponent);
                startActivity(intent);
    
                psFound = true;
                break;
            }
        }
        if (!psFound) {
            intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()));
            startActivity(intent);
        }
    }
    

    09-26 23:43
    查看更多