zoukankan      html  css  js  c++  java
  • Android在跳转市场进行评分问题总结

    原本以为应用评分是个很小的功能,但是一实现才发现真不是个小事。网上搜索资料没有找到答案,在很多开发群里面询问了很多人也没有解决问题,最后分析log,反编译看源码才终于有了些眉目,好吧,上代码:

    复制代码
    1 try{
    2     Uri uri = Uri.parse("market://details?id="+getPackageName());  
    3     Intent intent = new Intent(Intent.ACTION_VIEW,uri);  
    4     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);          
    5     startActivity(intent);
    6 }catch(ActivityNotFoundException e){
    7     Toast.makeText(context, "Couldn't launch the market !", Toast.LENGTH_SHORT).show();
    8 }
    复制代码

    而且在测试时发现在有些奇葩的没有安装应用市场的手机上面会出现直接退出应用的bug,于是又对异常进行了处理,现在终于把问题完美解决啦~

     
     
    在HTC手机上会默认跳转到HTC商城,可以强制改变跳转方法,让应用跳转到360市场,代码如下:
    Intent intent = new Intent(Intent.ACTION_VIEW);
    //跳转到360市场评分
    ComponentName cn = new ComponentName("com.qihoo.appstore",
    "com.qihoo.appstore.activities.SearchDistributionActivity");
    intent.setComponent(cn);
    intent.setData(Uri.parse("market://details?id=com.xiaoma.tuofu"));
    startActivity(intent);
     
    //判断市场是否存在的方法
    public static boolean isAvilible(Context context, String packageName){ 
            final PackageManager packageManager = context.getPackageManager();//获取packagemanager 
            List< PackageInfo> pinfo = packageManager.getInstalledPackages(0);//获取所有已安装程序的包信息 
            List<String> pName = new ArrayList<String>();//用于存储所有已安装程序的包名 
           //从pinfo中将包名字逐一取出,压入pName list中 
                if(pinfo != null){ 
                for(int i = 0; i < pinfo.size(); i++){ 
                    String pn = pinfo.get(i).packageName; 
                    pName.add(pn); 
                } 
            } 
            return pName.contains(packageName);//判断pName中是否有目标程序的包名,有TRUE,没有FALSE 
      }
    //判断360市场是否存在
     if (GetUri.isAvilible(AppsActivity.this, "com.qihoo.appstore")) {
    //市场存在
    }else{
    //市场不存在
    /*********************************华丽的分割线********************************************/
    public void test(View v) {
    // 判断360市场是否存在
    if (isAvilible(My.this, "com.qihoo.appstore")) {
    // 市场存在
     
    Intent intent = new Intent(Intent.ACTION_VIEW);
    // 跳转到360市场评分
    ComponentName cn = new ComponentName("com.qihoo.appstore",
    "com.qihoo.appstore.activities.SearchDistributionActivity");
    intent.setComponent(cn);
    intent.setData(Uri
    .parse("market://details?id=com.paopaobeauty.meinv"));
    startActivity(intent);
    } else {
    // 市场不存在
    Toast.makeText(getApplicationContext(), "请下载360手机助手", 0).show();
    }
    }
     
    // 判断市场是否存在的方法
    public static boolean isAvilible(Context context, String packageName) {
    final PackageManager packageManager = context.getPackageManager();// 获取packagemanager
    List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息
    List<String> pName = new ArrayList<String>();// 用于存储所有已安装程序的包名
    // 从pinfo中将包名字逐一取出,压入pName list中
    if (pinfo != null) {
    for (int i = 0; i < pinfo.size(); i++) {
    String pn = pinfo.get(i).packageName;
    pName.add(pn);
    }
    }
    return pName.contains(packageName);// 判断pName中是否有目标程序的包名,有TRUE,没有FALSE
    }
  • 相关阅读:
    回答自己之前的提问!
    阅读《构建之法》第13-17章
    阅读《构建之发》10-12章
    阅读《构建之法 》8,9,10章
    Practise 5.2测试与封装(黑白盒
    Practice5.1 测试与封装5.1
    Practice4 阅读《构建之法》6-7章
    Practice3 阅读《构建之法》1-5章
    “做汉堡”之评价我的队友
    Practice2 结对子之“小学四则运算”
  • 原文地址:https://www.cnblogs.com/exmyth/p/4579455.html
Copyright © 2011-2022 走看看