当前位置:   article > 正文

android 下载更新 选择市场_android queryintentactivities app_market

android queryintentactivities app_market

公司项目需求 更新版本的时候 要指定跳入 应用宝 华为市场  本人总结如下

1.工具类 UrlHelper

  1. package jie.android.weblearning.utils;
  2. import android.content.ActivityNotFoundException;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.content.pm.ActivityInfo;
  6. import android.content.pm.PackageInfo;
  7. import android.content.pm.PackageManager;
  8. import android.content.pm.ResolveInfo;
  9. import android.net.Uri;
  10. import android.text.TextUtils;
  11. import java.util.ArrayList;
  12. import java.util.List;
  13. import jie.android.weblearning.data.APPMarketIcon;
  14. /**
  15. * Created by Jie on 10/19/15.
  16. */
  17. public class UrlHelper {
  18. private final static String TENCENT_PACKGET = "com.tencent.android.qqdownloader";
  19. public static void browserOpenUrl(final Context context, final String url) {
  20. String uri = url;
  21. if (!uri.startsWith("http://") && !url.startsWith("https://")) {
  22. uri = "http://" + uri;
  23. }
  24. final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
  25. context.startActivity(intent);
  26. }
  27. //跳转到应用宝市场主流手机市场
  28. public static void goToMarket(Context context, String packageName) {
  29. Uri uri = Uri.parse("market://details?id=" + packageName);
  30. Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
  31. try {
  32. if (getDeviceBrand().equalsIgnoreCase("XIAOMI")){
  33. goToMarket.setClassName("com.tencent.android.qqdownloader", "com.tencent.pangu.link.LinkProxyActivity");
  34. }
  35. context.startActivity(goToMarket);
  36. } catch (ActivityNotFoundException e) {
  37. e.printStackTrace();
  38. }
  39. }
  40. /**
  41. * 跳转到应用市场app详情界面
  42. *
  43. * @param appPkg App的包名
  44. * @param marketPkg 应用市场包名
  45. */
  46. public static void launchAppDetail(Context context, String appPkg, String marketPkg) {
  47. try {
  48. if (TextUtils.isEmpty(appPkg))
  49. return;
  50. Uri uri = Uri.parse("market://details?id=" + appPkg);
  51. Intent intent = new Intent(Intent.ACTION_VIEW, uri);
  52. if (!TextUtils.isEmpty(marketPkg))
  53. intent.setPackage(marketPkg);
  54. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  55. context.startActivity(intent);
  56. } catch (Exception e) {
  57. e.printStackTrace();
  58. }
  59. }
  60. /**
  61. * 判断应用是否安装
  62. **/
  63. public static boolean isAppInstalled(Context context, String packageName) {
  64. final PackageManager packageManager = context.getPackageManager();
  65. List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
  66. List<String> pName = new ArrayList<String>();
  67. if (pinfo != null) {
  68. for (int i = 0; i < pinfo.size(); i++) {
  69. String pn = pinfo.get(i).packageName;
  70. pName.add(pn);
  71. }
  72. }
  73. return pName.contains(packageName);
  74. }
  75. /**
  76. * 获取手机厂商
  77. *
  78. * @return 手机厂商
  79. */
  80. public static String getDeviceBrand() {
  81. return android.os.Build.BRAND;
  82. }
  83. /**
  84. * 获取手机安装的手机市场包名
  85. */
  86. public static List<APPMarketIcon> getAllMarket(Context context) {
  87. PackageManager pManager = context.getPackageManager();
  88. List<APPMarketIcon> packageList = new ArrayList<>();
  89. Intent intent = new Intent();
  90. intent.setAction("android.intent.action.MAIN");
  91. intent.addCategory("android.intent.category.APP_MARKET");
  92. PackageManager pm = context.getPackageManager();
  93. List<ResolveInfo> infos = pm.queryIntentActivities(intent, 0);
  94. int size = infos.size();
  95. for (int i = 0; i < size; i++) {
  96. APPMarketIcon appMarketIcon=new APPMarketIcon();
  97. ActivityInfo activityInfo = infos.get(i).activityInfo;
  98. // appMarketIcon.setPackagename(activityInfo.packageName);
  99. appMarketIcon.setPackagename(TENCENT_PACKGET);
  100. appMarketIcon.setAppicon(activityInfo.loadIcon(pManager));
  101. appMarketIcon.setAppname(activityInfo.loadLabel(pManager).toString());
  102. packageList.add(appMarketIcon);
  103. //获取应用市场的包名
  104. }
  105. return packageList;
  106. }
  107. /**
  108. * 跳转到对应app市场的详情页面
  109. */
  110. public static void goTomarket(Context context,final String apppackagename,final String marketname) {
  111. Intent intent = new Intent(Intent.ACTION_VIEW);
  112. Uri uri = Uri.parse("market://details?id=" + apppackagename);//app包名
  113. intent.setData(uri);
  114. intent.setPackage(marketname);//应用市场包名
  115. context.startActivity(intent);
  116. }
  117. /**
  118. * 找出手机当前安装的所有浏览器程序
  119. */
  120. public static List<APPMarketIcon> getALLbrower(Context context) {
  121. PackageManager pManager = context.getPackageManager();
  122. List<APPMarketIcon> allbrower = new ArrayList<>();
  123. System.out.println("******");
  124. Uri uri = Uri.parse("http:www.baidu.com");
  125. Intent it = new Intent(Intent.ACTION_VIEW, uri);
  126. // 通过查询,获得所有ResolveInfo对象.
  127. List<ResolveInfo> resolveInfos = context.getPackageManager().queryIntentActivities(it, PackageManager.MATCH_DEFAULT_ONLY);
  128. for (ResolveInfo resolveInfo : resolveInfos) {
  129. APPMarketIcon marketIcon=new APPMarketIcon();
  130. marketIcon.setPackagename(resolveInfo.activityInfo.packageName);
  131. marketIcon.setAppicon(resolveInfo.loadIcon(pManager));
  132. marketIcon.setAppname(resolveInfo.loadLabel(pManager).toString());
  133. allbrower.add(marketIcon);
  134. }
  135. return allbrower;
  136. }
  137. }
使用  本人用的笨方法 自定义图标还是。。。 (需求要求:是华为手机 要调用出来华为应用市场 ,并且判断手机是否下载了腾讯应用宝,安装的话 华为应用市场+应用宝,非华为手机的话 只判断是否有应用宝 有的话 显示应用宝 没有的话 直接跳入网页版应用宝的应用详情)

一下是点击 立即更新 代码 片段

  1. // List<APPMarketIcon> allMarketList = UrlHelper.getAllMarket(MainActivity.this);//所有的app市场
  2. // List<APPMarketIcon> allbrowerList = UrlHelper.getALLbrower(MainActivity.this);//所有浏览器
  3. List<APPMarketIcon> allMarketList=new ArrayList<>();
  4. List<APPMarketIcon> huaweiMarketList=new ArrayList<APPMarketIcon>();
  5. APPMarketIcon appMarketIconHuawei = new APPMarketIcon();
  6. appMarketIconHuawei.setAppname("华为应用市场");
  7. Drawable drawable = getResources().getDrawable(R.drawable.icon_huawei);
  8. appMarketIconHuawei.setAppicon(drawable);
  9. appMarketIconHuawei.setPackagename(HUAWEI_PACKET);
  10. huaweiMarketList.add(appMarketIconHuawei);
  11. List<APPMarketIcon> tentenctMarketList=new ArrayList<APPMarketIcon>();
  12. APPMarketIcon appMarketIconTencent = new APPMarketIcon();
  13. appMarketIconTencent.setAppname("应用宝");
  14. Drawable drawable_tencent = getResources().getDrawable(R.drawable.icon_tencent);
  15. appMarketIconTencent.setAppicon(drawable_tencent);
  16. appMarketIconTencent.setPackagename(TENCENT_PACKGET);
  17. tentenctMarketList.add(appMarketIconTencent);
  18. // allMarketList.addAll(0,allbrowerList);
  19. if (UrlHelper.getDeviceBrand().equalsIgnoreCase("HUAWEI")){
  20. allMarketList.addAll(huaweiMarketList);
  21. }
  22. if (UrlHelper.isAppInstalled(MainActivity.this, TENCENT_PACKGET)) {
  23. allMarketList.addAll(tentenctMarketList);
  24. // UrlHelper.launchAppDetail(MainActivity.this, APP_PACKAGE, HUAWEI_PACKET);
  25. }
  26. if (UrlHelper.isAppInstalled(MainActivity.this, TENCENT_PACKGET)||UrlHelper.getDeviceBrand().equalsIgnoreCase("HUAWEI")){
  27. showDialog(allMarketList);
  28. }else {
  29. //直接跳入网页版应用宝的应用详情
  30. UrlHelper.browserOpenUrl(MainActivity.this, resp.getUpdateUrl());
  31. finish();
  32. }

  1. public void showDialog(List<APPMarketIcon> appMarketIconList) {
  2. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  3. LayoutInflater inflater = getLayoutInflater();
  4. final View layout = inflater.inflate(R.layout.dialog_app_market, null);//获取自定义布局
  5. builder.setView(layout);
  6. builder.setIcon(R.mipmap.icon);//设置标题图标
  7. builder.setTitle(R.string.dialog_market_toast);//设置标题内容
  8. //builder.setMessage("");//显示自定义布局内容
  9. GridView gridView = (GridView) layout.findViewById(R.id.gridview_app_market);
  10. APPMarketAdapter appMarketAdapter = new APPMarketAdapter(MainActivity.this, appMarketIconList);
  11. gridView.setAdapter(appMarketAdapter);
  12. //
  13. // builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
  14. // @Override
  15. // public void onClick(DialogInterface arg0, int arg1) {
  16. // // TODO Auto-generated method stub
  17. // Toast.makeText(getApplication(), "ok", Toast.LENGTH_SHORT).show();
  18. // }
  19. // });
  20. //取消
  21. builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
  22. @Override
  23. public void onClick(DialogInterface arg0, int arg1) {
  24. // TODO Auto-generated method stub
  25. handler.obtainMessage(MSG_CREATE_OVER).sendToTarget();
  26. }
  27. });
  28. final AlertDialog dlg = builder.create();
  29. dlg.show();
  30. }

  1. package jane.android.weblearning.adapter;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.net.Uri;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.BaseAdapter;
  9. import android.widget.ImageView;
  10. import android.widget.TextView;
  11. import java.util.List;
  12. import jie.android.weblearning.R;
  13. import jie.android.weblearning.data.APPMarketIcon;
  14. import jie.android.weblearning.utils.UrlHelper;
  15. /**
  16. * Created by Jane on 2017/9/29.
  17. */
  18. public class APPMarketAdapter extends BaseAdapter {
  19. private Context context;
  20. private List<APPMarketIcon> marketIconList;
  21. private LayoutInflater inflater;
  22. private final String APP_PACKAGE = "jie.android.weblearning";
  23. private final String TENCENT_PACKGET = "com.tencent.android.qqdownloader";
  24. public APPMarketAdapter(Context context, List<APPMarketIcon> marketIconList) {
  25. this.context = context;
  26. this.marketIconList = marketIconList;
  27. inflater = LayoutInflater.from(context);
  28. }
  29. @Override
  30. public int getCount() {
  31. return marketIconList.size();
  32. }
  33. @Override
  34. public Object getItem(int position) {
  35. return marketIconList.get(position);
  36. }
  37. @Override
  38. public long getItemId(int position) {
  39. return position;
  40. }
  41. @Override
  42. public View getView(int position, View convertView, ViewGroup parent) {
  43. MarketHolder marketHolder = null;
  44. final APPMarketIcon appMarketIcon = marketIconList.get(position);
  45. if (convertView == null) {
  46. marketHolder = new MarketHolder();
  47. convertView = inflater.inflate(R.layout.list_item_app_market, null);
  48. marketHolder.imageIcon = (ImageView) convertView.findViewById(R.id.app_market_icon);
  49. marketHolder.tv_appname = (TextView) convertView.findViewById(R.id.tv_market_appname);
  50. convertView.setTag(marketHolder);
  51. } else {
  52. marketHolder = (MarketHolder) convertView.getTag();
  53. }
  54. marketHolder.imageIcon.setImageDrawable(appMarketIcon.getAppicon());
  55. marketHolder.tv_appname.setText(appMarketIcon.getAppname());
  56. convertView.setOnClickListener(new View.OnClickListener() {
  57. @Override
  58. public void onClick(View v) {
  59. String packagename = appMarketIcon.getPackagename();
  60. if (packagename.equals("com.android.browser")) {//android 系统浏览器
  61. Intent intent = new Intent();
  62. intent.setAction("android.intent.action.VIEW");
  63. Uri content_url = Uri.parse("http://a.sm.cn/details/info?ua=android&vid=21&pkg=jie.android.weblearning&ch=SM_6&uc_param_str=dn&from=wh10344");
  64. intent.setData(content_url);
  65. intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
  66. context.startActivity(intent);
  67. }
  68. UrlHelper.launchAppDetail(context, APP_PACKAGE, appMarketIcon.getPackagename());
  69. }
  70. });
  71. return convertView;
  72. }
  73. private class MarketHolder {
  74. private ImageView imageIcon;
  75. private TextView tv_appname;
  76. }
  77. }
list_item_app_market.xml 布局文件(图片就不提供啦)

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content"
  5. android:gravity="center_horizontal"
  6. android:orientation="vertical">
  7. <ImageView
  8. android:id="@+id/app_market_icon"
  9. android:layout_width="55dp"
  10. android:layout_height="55dp"
  11. android:src="@mipmap/icon"/>
  12. <TextView
  13. android:id="@+id/tv_market_appname"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:text="app名称"
  17. android:textColor="@color/black"
  18. android:layout_margin="5dp"
  19. android:textSize="16sp"
  20. />
  21. </LinearLayout>



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/283772
推荐阅读
相关标签
  

闽ICP备14008679号