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
    }
  • 相关阅读:
    给router-link 标签添加事件@click 、@mouseover等无效
    elementUI的导航栏在刷新页面的时候选中状态消失的解决
    查看mysql数据库中的所有用户
    已经安装了客户端,但是cmd输入sqlcmd报错:Sqlcmd:Error:Connection failure.SQL Native Client is not installed correctly
    在运行bat文件时,报错发生系统错误123,文件名,目录名或卷标语法不正确
    数据库表空间文件被删除后,再删除表空间时报错
    oracle在exp导出时报错PLS-00201: identifier 'EXFSYS.DBMS_EXPFIL_DEPASEXP' must be declared
    oracle compile 编译无效对象
    Oracle 导出错误 EXP-00000~EXP-00107
    修改oralce数据库用户名和密码
  • 原文地址:https://www.cnblogs.com/exmyth/p/4579455.html
Copyright © 2011-2022 走看看