原本以为应用评分是个很小的功能,但是一实现才发现真不是个小事。网上搜索资料没有找到答案,在很多开发群里面询问了很多人也没有解决问题,最后分析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
}

Android在跳转市场进行评分问题总结的更多相关文章

  1. android应用中去android市场去评分的功能实现(吐槽一波个人应用上线...)

    一般的app可能会有这中功能,在应用中去android商店评分来提高排名,前段时间也把我的博客园上传到商店,这里不得不吐槽一些android商店的开放平台. 酷派,vivo,oppo,联想不支持个人开 ...

  2. Android app去应用市场评分功能

    因为android市场很多,去各个应用市场评分的功能却不是很难实现. private void gotoRate(){ Uri uri = Uri.parse("market://detai ...

  3. ios------app跳转到appStore评分

    跳转到AppStore评分,有两种方法: 一种是跳出应用,跳转到AppStore,进行评分: 另一种是在应用内,内置AppStore进行评分. PS:appID在https://itunesconne ...

  4. Android 页面跳转之生命周期调用顺序问题

    Android Activity 常用技巧 Android Activity 启动模式和任务栈 Android 页面跳转之生命周期调用顺序问题 一.页面跳转逻辑分析 1.1 跳转逻辑分析 Androi ...

  5. Android——Activity跳转

    Activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayou ...

  6. android Fragment跳转Fragment

    android Fragment跳转Fragment,最新的android studio3 在系统模板建立的BottomNavigationView 中跳转方式 此版本下不能用FragmentMana ...

  7. Android实现跳转到应用市场进行版本更新功能

    最近需要做应用版本更新功能,因为之前已经写过一篇版本更新的功能了,虽然请求接口还是用的HttpUrlConnection,想着改改现在应用使用的请求方式也挺快的嘛,心里开始暗喜,可以偷偷懒了,哈哈哈. ...

  8. Android 调用已安装市场,进行软件评分的功能实现

    Uri uri = Uri.parse("market://details?id="+getPackageName()); Intent intent = new Intent(I ...

  9. 【转】Android各大发布市场

    前言 如果只有一个或者少许的两三个Android市场,本文也没用存在的必要性,本文谨献给同在Android奋战的同仁. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnbl ...

随机推荐

  1. this computer does not support Intel Virtualization Technology (VT-x) .Haxm can'not be installed

    this computer does not support Intel Virtualization Technology (VT-x) .Haxm can'not be installed 本机不 ...

  2. 禁止Windows远程桌面拷贝文件

    通过组策略,我们可以解决以上问题,开始菜单运行输入gpedit.msc,进入“计算机配置”项,按顺序进入“管理模板”.“windows组件”.“终端服务”.“客户端/服务器数据重定向”.在详细描述栏中 ...

  3. Mysql 5.6 Cmake 编译安装

    MySQL编译安装 环境: OS: CentOS 6.6x64 mini mysql: mysql-5.6.251. mysql 下载: http://dev.mysql.com/downloads/ ...

  4. IIS6添加5.3.27 /西部数据网站管理助理升级php

    下载并安装IIS FastCGI 下载地址:http://www.iis.net/download/fastcgi. 选择 x86或者download x86,下载下来名称为 fcgisetup_1. ...

  5. phpEXCEL操作全解

    phpExcel中文帮助手册,列举了各种属性,以及常用的操作方法,难得是每一个都用实例加以说明,希望对大家有所帮助. phpExcel中文帮助手册,不可多得的好文章,供大家学习参考. 1.设置exce ...

  6. Delphi窗体创建释放过程及单元文件小结(转)

    Delphi窗体创建释放过程及单元文件小结 Delphi中的窗体,有模式窗体与非模式窗体两种.两种窗体的调用方式不同,模式窗体使用ShowModal显示,非模式窗体使用Show显示.当显示模式窗体的时 ...

  7. 用dup2和dup产生一份file descriptor 的拷贝

    在类Unix操作系统里面,.dup2和dup都通过系统调用来产生一份file descriptor 的拷贝.   dup对我来说还很简单   int dup(int filedes);   dup2就 ...

  8. PE文件结构整理

    一直想做一个PE结构的总结,只是学的时候有很多东西就没搞懂,加上时间一长,很多知识也早忘了,也就一直没完成.这几天从头看了下,好不容易理清楚了,整理一下,以免又忘了 pe文件框架结构,图片贴过来太模糊 ...

  9. python 3.5 用户登录验证和输入三次密码锁定用户

    #!/usr/bin/env python #encoding: utf-8 #登录程序,输入用户和密码输出欢迎信息,输入错误三次锁定用户,不让登录 import sys print (''' 欢迎登 ...

  10. 转:Qt项目中遇到的一些小问题汇总

    链接:http://blog.csdn.net/yangyunfeizj/article/details/7082001    作者:GoatYangYang 公司让负责qt界面开发,但是接触qt又不 ...