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

    hdu 2689 超级大水题....两种代码都过了,开始以为n^2会tle,后来竟然过了...汗 注意下cin写在while里面,就可以了 #include <iostream> usin ...

  2. require(),include(),require_once()和include_once()之间的区别

    引用文件的方法有两种:require 及 include. require 的使用方法如 require("file.php"); .这个函数通常放在 PHP 程序的最前面,PHP ...

  3. 关于android:screenOrientation="portrait"等

    1.android:screenOrientation="portrait",表示当切换横竖屏的时候,屏幕的内容始终以竖屏显示,而不会根据屏幕的方向来显示内容. 2.插入个Andr ...

  4. component object model(组件对象模型)

    通常,COM是以 win32动态链接库(dll)或可执行文件(exe)的形式发布. 在COM中,接口就是一切,对于客户来说,一个组件就是一个接口集.COM接口是一个包含一个函数指针数组的内存结构. 组 ...

  5. XML DOM 总结一

        对这个基本概念我不介绍太多,无非就是一定格式的文本而已,我现在侧重于如何使用它.      首先看看.NET对它的支持.      首先看看这个类图:            所有的都是基于Xm ...

  6. angularjs不同页面间controller传参方式,使用service封装sessionStorage

    这里分享一个我在实际项目中,使用service封装的一个依赖sessionStorage的传参服务. 这里先说下大背景,在我们的实际开发中,登陆之后一般会存在一个token,这个token将会贯穿全场 ...

  7. 武汉科技大学ACM:1009: 华科版C语言程序设计教程(第二版)习题5.12

    Problem Description 这天老师照例给小豪出了一道题目:老师给小豪一个字符串,让小豪将该字符串逆序输出. Input 第一行包括一个T,表示有多少组测试数据: 接下来T行,每行包括一个 ...

  8. Jquery获取背景图片src路径

    例如获取body的背景: Jquery代码如下: var back = $('body').css('backgroundImage'); back.substring(start,end); //截 ...

  9. OpenStack点滴03-Neutron

    OpenStack Neutron是一个比较复杂的组件,如果说OpenStack安装部署过程哪一个组件最麻烦,那就肯定是网络组件Neutron了. 因为我对OpenStack网络这块也不是很熟,就把我 ...

  10. PHP开发环境设置

    步骤有三个: Apache 服务器安装.PHP 安装和让 Apache 支持 PHP 1. Apache 服务器的安装与配置 基于Windows操作系统支持的PHP开发的服务器有IIS和Apache, ...