自己动手清除Android系统中的不良程序

陈跃峰

2014/6/29

最近在使用我的Nexus7时,总是经常莫名其妙的弹出一些广告弹窗,还会自动下载一些应用程序,还会在桌面上生成一个叫做“精彩应用”的图标,这个快捷方式关联的程序显示的内容和广告内容是一致的,很是烦人,使用360手机卫士和乐安全都发现不了这个不良程序,所以就自己动手来清除这个程序。

由于Nexus 7平时用于测试程序,安装的应用很多,手动删除了一些可疑的应用以后还是不行,猜测是某些app可能被人篡改了,就不再去删除app了,而把目光转向了桌面快捷方式上。

既然生成了“精彩应用”这个图标,而且点击可以启动程序,但是安卓系统的快捷方式和app之间没有很直观的联系,这就需要写些代码来解决了:

1、获取快捷方式对应的包名

众所周期,每个安卓app依靠一个唯一的包名就行区分,只要能发现这个包名,剩下就简单了。

获取快捷方式需要读写系统设置的权限:

<uses-permissionandroid:name="com.android.launcher.permission.READ_SETTINGS" />

<uses-permissionandroid:name="com.android.launcher.permission.WRITE_SETTINGS" />

读取快捷方式的代码如下:

/**

* 显示快捷方式信息

* @param context 上下文对象

*/

publicstatic void printShortcutInfo(Context context){

try{

ContentResolverresolver = context.getContentResolver();

Cursor cursor = resolver.query(Uri.parse("content://com.android.launcher2.settings/favorites?notify=true"),null,null,null,null);

int index = 0;

while(cursor.moveToNext()){

intnum = 5;

try{

Stringinfo = "";

for(inti = 0;i < num;i++){

info+= cursor.getString(i) + ",";

}

System.out.println(index+++ "  " + info);

}catch(Exceptione1){}

}

cursor.close();

}catch(Exceptione){

e.printStackTrace();

}

}

通过执行这些代码,发现“精彩应用”这个快捷方式对应的包名是“cn.com.hkgt.gasapp”,通过这个包名也不能直接找到对应的程序,那下面就自己编码卸载这个程序,看看到底是哪里出了问题。

2、根据包名卸载app

对于没有root的程序,卸载时只是调用卸载界面,但是这个对于我来说足够了。

卸载程序需要的权限:

<uses-permissionandroid:name="android.permission.DELETE_PACKAGES" />

卸载程序的方法代码:

/**

* 卸载软件

*@param context 上下文对象

*@param pkgName 包名

*/

public static void deletePackage(Contextcontext,String pkgName){

try{

Uri packageURI =Uri.parse("package:" + pkgName);

Intent uninstallIntent = newIntent(Intent.ACTION_DELETE, packageURI);

context.startActivity(uninstallIntent);

}catch(Exception e){

e.printStackTrace();

}

}

执行这个方法卸载上面包名的程序时,终于发现是中石化营业厅程序被人篡改了,卸载该app,去他们的官网再次下载安装app,世界终于一片清静了。

最后发现百度应用中心和应用宝里面提供的中石化营业厅程序都是被篡改的程序,看来以后下载和安装app还是小心一点的好。

把自己的这一小段经历和大家一起分享,如果大家有更好的方法也请告诉我,谢谢。联系方式:[email protected]

自己动手清除Android系统中的不良程序,布布扣,bubuko.com

时间: 2024-11-08 18:56:10

自己动手清除Android系统中的不良程序的相关文章

linux内核netfilter实现url重定向 (嵌入android系统中)

该文件拷贝到 <AndroidSource>/kernel/net/ipv4/netfilter 目录下, 在  <AndroidSource>/kernel/net/ipv4/netfilter/Makefile  最后一行添加:obj-y += url_redirect.o  (Mtk系统 编译bootimage烧写 编译命令:./makeMtk [工程名] n(r) kernel && ./mk bootimage) (在android系统中测试)该文件还需修

Android系统中添加一个产品----图文详解

本文本着开源的精神介绍如何向一个Android系统中添加一个产品的整个过程,按照以下过程笔者有理由相信每个将要从事本行业的人都可以完成,其实添加一个产品并不难,难的是对其相关硬件的修改,好了废话不多说. 首先我们要创建一个属于自己产品的目录,这里以WY_device为例,以WY作为产品的名字. 首先从已经存在的产品中拷贝一个以产品的名字为名的.mk文件,修改为自己的.mk文件,在这里为WY.mk 对其进行如下的修改: 然后添加AndroidProducts.mk  这是添加产品的配置文件名路径,

Android系统中的广播(Broadcast)机制简要介绍和学习计划

在Android系统中,广播(Broadcast)是在组件之间传播数据(Intent)的一种机制:这些组件甚至是可以位于不同的进程中,这样它就像Binder机制一样,起到进程间通信的作用:本文通过一个简单的例子来学习Android系统的广播机制,为后续分析广播机制的源代码作准备. 在Android系统中,为什么需要广播机制呢?广播机制,本质上它就是一种组件间的通信方式,如果是两个组件位于不同的进程当中,那么可以用Binder机制来实现,如果两个组件是在同一个进程中,那么它们之间可以用来通信的方式

Android系统中的dp和px的转换

android系统中DP和SP的转化:1.首先分析TypedValue.java 可以调用以下代码获得dp的值 TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20,getResources().getDisplayMetrics()); public static float applyDimension(int unit, float value,DisplayMetrics metrics) { switch (unit) {

Android系统中设置TextView的行间距(非行高)

Android系统中TextView默认显示中文时会比较紧凑,不是很美观.为了让每行保持一定的行间距,可以设置属性android:lineSpacingExtra或android:lineSpacingMultiplier. 关于Android下TextView中文换行问题,可查看Android自定义view-文本自动换行. 1.android:lineSpacingExtra设置行间距,如”3dp”. 2.android:lineSpacingMultiplier设置行间距的倍数,如”1.2″

清除Android工程中没用到的资源

项目需求一改再改,UI一调再调,结果就是项目中一堆已经用不到但却没有清理的垃圾资源,不说工程大小问题,对新进入项目的人或看其他模块的代码的人来说,这些没清理的资源可能也可能会带来困扰,所以最好还是清理掉这些垃圾,对于一个稍微大一点的工程来说,手工清理明显是不现实的,这就需要一个方法做这些事情. 清理资源文件 要清理没用的资源,首要的工作当然是找到他们,我们知道Anroid SDK中有一个工具叫lint,可以帮助我们查看工程中存在的问题,其中有一项功能就是查找没用到的资源,这样这一步就简单了,直接

向Android系统中添加模块及产品流程

 添加Android模块  一.基础知识: (1)在Android系统中,编译都是以模块(而不是文件)作为单位的,每个模块都有一个唯一的名称: (2)为了将模块编译到Android系统中,每个模块都需要一个专门的Make文件,也即是"Android.mk"文件: 二.实现hello.c 模块的编写  1. 如在 hardware/test目录下,编写hello.c 2. 在hardw/test目录下,编写Android.mk Android.mk编写的步骤: (1)设置当前模块的编译路

Android 系统中,那些能大幅提高工作效率的 API 汇总(持续更新中...)

前言 "条条大路通罗马."工作中,实现某个需求的方式往往不是唯一的,这些不同实现方式不仅表现在代码质量上,还影响着我们的工作效率.就像,在 Android 系统中,总有那么一些鲜为人知的 API 能够减少我们很多零碎的工作量.于是,就想凭着一些经验,整理一些常用的,找个地方归纳总结,也供日后翻阅. getResources().getIdentifier(String name, String defType, String defPackage) 根据资源名称获取资源 id.正常情况

AIDL在android系统中的作用

AIDL,Android Interface definition language的缩写,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口.最近看了下AIDL在Android系统中的用法,在网上看到很多初学的朋友不太明白AIDL的实际作用,android提供了很多进程间通信的组件,像action.broadcast.contentprovide都可以实现进程间的通信,为什么还要用AIDL这个东西呢?我在android源码中实现了一个自己写的AIDL例子,用以