起因:

自打愚安我开始使用android设备以来,一直觉得google还算厚道,应用列表里的顺序一直都是依据APP的名称,按照先中文(拼音字母表顺序),后英文(字母表顺序)的原则进行排序的,并没有说Google自家的应用就排在前面,相反由于google的app大都是没有中文名的,一般都排的比较靠后。

就拿愚安我的Nexus 7来说,顺序为:艾诺迪亚4(ainuodiya4),百度魔图(baidumotu),保卫萝卜(baoweiluobo),布卡漫画(bukamanhua)。。。。。找你妹(zhaonimei),Air hockey,Angry Birds。。。。YouTube。

一切都看上去这么和谐,愚安还时常默念这些App的拼音来证实下自己小学老师死的不早。可是有一天,这货出现了,三观被毁了…

愚安我的Nexus上装的是中文版的美团(懒得截屏,在pc上的模拟器上给大家做的测试),app名称为美团HD,这货当时出现在了第一的位置,我瞬间觉得呼吸急促!!什么情况?我尝试着拼M-EI-MEI,没错啊,是M啊,怎么会这样!我当时自己给自己的解释是在google的汉字<=>拼音 映射表中,这个“美”字,要么没有收录,要么收录错了,成了A(啊音),就没当一回事。

可是,今天Nexus的空间有点吃紧,我还是删除一些不用的App。事实证明,有些事情就像街上的姑娘一样,换个角度看,就能发现美。当这些APP名称成竖排列表显示时,这个美团HD依然排在最上面,但是唯一不同的是,它的名称好像比下面的应用都稍稍向右偏移了一些角度,难道前面还有别的字符没有显示出来????

下了班后,我开始了自己的测试:

步骤1:猜测前面是一个不可见字符

随便在Eclipse里建了个Android项目,名称前面留了个空格,发现没有任何作用,app还是排在比较靠后的位置;

然后我又把空格换成了下划线,如下图,顺序是到了最前面了,但美团的开发人员显然不会无视大家的视力来这么做的。

算了,在虚拟机上装一个美团HD看看吧,如下图

擦,显示成拼音还是这么牛气的排在最前面,不能忍,要看你代码了。

步骤2:查看美团apk文件

我们知道,android应用的名称在一个叫AndroidManifest.xml,查看之

阿偶,乱码了。没办法,反编译吧

利用APK Multi(如上)将美团的apk文件反编译了,再来查看,如下:

懂android开发的同学,应该知道,上面的xml说明其名称为资源string里的app_name,查看如下:

果然,在“美团HD”的前后各出现了一个占位符,但具体是什么呢?我打开了,全字符查看模式,如下:

其中的…即为空格,CRLF为换行符,我们发现,那两个空白的地方仍然是什么都没有显示。怎么办呢?

好办,既然它出现在这里,还是可以被选中的,我拖动鼠标选中了它,然后打开度娘,粘贴,搜索,得到如下结果:

出现的搜索结果中出现的最多的是“02”(上图中,最后一个搜索结果大家无视掉),soga,果断打开ASCII表,查看,这个02到底是什么呢:

哦,原来是标志正文开始的符号啊!接着我把刚刚那个_QQ的应用的名称改成包含上述符号的 HD ,果断出现在了第一的位置。

至此,美团应用为什么会排在这么前面的原因,已基本清楚,细节部分,我也懒得去深究。但出现这种情况,到底是因为google的疏漏,还是开发者的小聪明,还是管理者的无赖呢?反正,愚安我是觉得,挺贱的,拿出来跟大家分享一下,只做交流,还是希望大家以后在开发的时候,尽量有点节操,不要使用这种手段。

试想一下,一款好的应用,用户是不会因为它的位置靠后就不去使用它了,再说了,用户还会在桌面上根据自己的使用习惯来设置快捷方式,这个是你左右不了的。为了用户多看到你一点,而使用这种方法,反而让像我这样的无聊用户感到反感。

贱贱的美团安卓客户端---如何实现让安卓app在应用列表获得较靠前的位置的更多相关文章

  1. 安卓客户端a标签长按弹框提示解决办法

    昨天工作时候发现一个bug,是关于a标签的,在安卓客户端中,如果是a标签的话,长按会出现一个弹框,如图所示 是因为安卓客户端的长按触发机制,以后进行wap端开发的时候,如果用到跳转页面尽量不要用a标签 ...

  2. 【源码】c#编写的安卓客户端与Windows服务器程序进行网络通信

    NetworkComms网络通信框架序言 用c#开发安卓程序 (xamarin.android)系列之三 源码(包含客户端与服务器端所有工程文件)    数据库文件 为了方便您测试,我临时搭建了一个服 ...

  3. .net和java和谐相处之安卓客户端+.net asp.net mvc webapi 2

    作为没有花很多时间转java,把java当C#用的我,在做服务器端程序的时候,自然不想考虑java web,java需要学的框架太多了,看了一下Java Servlet,始终没有编码的冲动.经过几天的 ...

  4. 大富豪APK安卓客户端的反编译修改和重新打包

    大富豪APK安卓客户端的反编译修改和重新打包 修改安装我们需要几个工具 DFH_3.4.X  (用于修改客户端) dnsPy        (用于修改.dll文件) 大富豪加解密.exe  ( 用于加 ...

  5. XMPP(二)-基于asmack+openfire的安卓客户端(仿QQ)的介绍以及个人心得

    关于XMPP第一篇-openfire的搭建写完后,就一直在赶本篇所要介绍的这个基于asmack+openfire的安卓客户端,费了不少精力,因为有不少同学在还在焦急的等待着(自恋了呵呵),所以紧赶慢赶 ...

  6. WebSocket安卓客户端实现详解(三)–服务端主动通知

    WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 We ...

  7. js判断安卓客户端或者是ios客户端,是否是微信浏览器

      代码: function xaizai() {  var u = navigator.userAgent, app = navigator.appVersion;  var isAndroid = ...

  8. WebSocket安卓客户端实现详解(一)–连接建立与重连

    http://blog.csdn.net/zly921112/article/details/72973054 前言 这里特别说明下因为WebSocket服务端是公司线上项目所以这里url和具体协议我 ...

  9. Flutter安卓客户端打包

    想要安装到手机上,必须要进行打包,因为没有苹果手机,所以只能打包Android客户端的apk. 检查 App的配置 查看默认应用程序清单文件(位于/android/app/src/main/中的And ...

随机推荐

  1. [CAMCOCO][C#]我的系统架构.服务器端.(二)----DATA层

    这一层在园子里有很多很多的介绍了,这层写好之后老胡也没多研究,基本上就是参考的园子里大咖们的写法,具体的说明老胡也细说不了了,把接口和思路简单描述一下就好,如果有问题还是那句话,感谢您不吝赐教,老胡这 ...

  2. 微软推出的免费新书《Introducing Microsoft SQL Server 2012》

    微软推出的免费新书<Introducing Microsoft SQL Server 2012>,该书详细介绍微软SQL 2012数据库服务最新功能以及功能应用和使用技巧. 该书适合SQL ...

  3. 如何把rtf、doc文件转换为HTML文件

    //retText是路径 1 public string ExtractHtml(string rtfText) { try { //Create word object Word.Applicati ...

  4. Ajax中get提交和post提交的区别

    $.post("HandlerLiuYan.ashx", { leixing: leixing, danwei: danwei, liuyan: liuyan, name: nam ...

  5. C# 前台线程和后台线程

    进程会等待所有的前台线程完成后在结束工作,但是如果只剩下后台线程,则会直接结束工作 using System; using System.Collections.Generic; using Syst ...

  6. Linux中RM快速删除大量文件/文件夹方法

    昨天遇到一个问题,在Linux中有一个文件夹里面含有大量的Cache文件(夹),数量级可能在百万级别,使用rm -rf ./* 删除时间慢到不可接受.Google了一下,查到了一种方法,试用了下确实比 ...

  7. ASP.NET 跨域获取JSON天气数据

    前几天做一个门户网站,在首页需要加载气象数据,采用了中央气象局的接口. 刚开始采用JSONP在前台跨域请求数据,没成功~ 后换成在c#后台请求数据返回... 前端代码: $(function () { ...

  8. c# 读取远程主机性能计数器

    PerformanceCounter pc = new PerformanceCounter("Web Service", "Current Connections&qu ...

  9. HTTP状态码参考

    1. HTTP状态码意义 客户机与服务器建立连接后,发送一个请求给服务器(如:Get /index.html http/1.1),在服务器接到请求后,给予客户机相应的响应信息,包括该信息的协议版本号. ...

  10. 第一次使用easyUI

    一.项目结构图 二.在WebContent下新建resource文件夹,在resource底下创建easyui.将easyUI包放入其中. 三.在springMVC-servlet.xml写入资源路径 ...