• 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
    }
  • 相关阅读:
    [转]oracle 12c 中的分页子句
    display:table; 也可以实现 div 始终和内包的图片大小相同
    mongodb与SQL常见语句对照
    js生成验证码
    javascript 判断空数组
    网络绘制插件
    mongodb中查询返回指定字段
    Mybatis获取插入记录的自增长ID
    mysql 创建索引和删除索引
    Java 中 HashMap 初始化时赋值
  • 原文地址:https://www.cnblogs.com/exmyth/p/4579455.html
Copyright © 2020-2023  润新知