App内ジャンプアプリケーション市場の詳細

2827 ワード

App内でバージョンを表示するときに、本体にインストールされているアプリケーションストアをフィルタして表示し、クリックするとAppのこのアプリケーション市場の詳細ページにジャンプできます.市場更新に依存するAppで、指定されたいくつかのアプリケーション市場を検出し、新しいバージョンをダウンロードするためにジャンプすることもできます.
1.コア
SDK自体提供market://details?id=パッケージ名というUriは、アプリケーション市場にジャンプするために使用されます.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=" + getActivity().getPackageName()));
startActivity(intent);

通常の使用では、インストールされているアプリケーションストアのリストがデフォルトで開きます.1つだけの場合、アプリケーションストアのみが開きます.海外のGoogleサービスの下でのアプリについては、あまり考慮する必要はありませんが、国内では他の店を考慮する必要があります.
2.国内応用市場のサポート
国内のアプリケーション市場を跳躍するには、まず、ある店が設置されているかどうかを判断する必要があります.ここでは、いくつかの一般的なアプリケーション市場パッケージ名を簡単にリストします.
//    --    
public static final String PACKAGE_COOL_MARKET = "com.coolapk.market";
//      
public static final String PACKAGE_MI_MARKET = "com.xiaomi.market";
//   
public static final String PACKAGE_TENCENT_MARKET = "com.tencent.android.qqdownloader";
//360    
public static final String PACKAGE_360_MARKET = "com.qihoo.appstore";
//   
public static final String PACKAGE_WANDOUJIA_MARKET = "com.wandoujia.phoenix2";
//      
public static final String PACKAGE_MEIZU_MARKET = "com.meizu.mstore";

インストールされたアプリケーションのリストを取得し、パッケージ名が存在するかどうかを判断します.
private void initAppList() {
    appList.clear();
    PackageManager packageManager = getActivity().getPackageManager();
    List packageInfoList = packageManager.getInstalledPackages(0);
    for (PackageInfo packageInfo : packageInfoList) {
        appList.add(packageInfo.packageName);
    }
}

3.ジャンプ詳細
あるAppアプリケーション市場がすでに存在することが知られている場合、その詳細ページ(特定のActivity)にジャンプする必要があります.この場合、2つの既知のパラメータが必要です.1つはアプリケーション市場パッケージ名、2つは詳細ページの完全な名前です.2番目のパラメータの取得方法については、アプリケーション市場apkのAndroid Manifest.xmlを参照すると、アプリケーションストアuriを開くページを受信するページが登録されていることがわかります.逆コンパイルが必要になる可能性があります.パッケージ名を示す上記の店の詳細ページをリストします.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=" + getActivity().getPackageName()));

//     
intent.setClassName(PACKAGE_COOL_MARKET, "com.coolapk.market.activity.AppViewActivity");

//        
intent.setClassName(PACKAGE_MI_MARKET, "com.xiaomi.market.ui.AppDetailActivity");

//     
intent.setClassName(PACKAGE_TENCENT_MARKET, "com.tencent.pangu.link.LinkProxyActivity");

//  360    
intent.setClassName(PACKAGE_360_MARKET, "com.qihoo.appstore.distribute.SearchDistributionActivity");

//     
intent.setClassName(PACKAGE_WANDOUJIA_MARKET, "com.wandoujia.jupiter.activity.DetailActivity");

//        
intent.setClassName(PACKAGE_MEIZU_MARKET, "com.meizu.flyme.appcenter.activitys.AppMainActivity");

startActivity(intent);