最近在使用我的Nexus7时,总是经常莫名其妙的弹出一些广告弹窗,还会自动下载一些应用程序,还会在桌面上生成一个叫做“精彩应用”的图标,这个快捷方式关联的程序显示的内容和广告内容是一致的,很是烦人,使用360手机卫士和乐安全都发现不了这个不良程序,所以就自己动手来清除这个程序。 由于Nexus 7平时用于测试程序,安装的应用很多,手动删除了一些可疑的应用以后还是不行,猜测是某些app可能被人篡改了,就不再去删除app了,而把目光转向了桌面快捷方式上。 既然生成了“精彩应用”这个图标,而且点击可以启动程序,但是安卓系统的快捷方式和app之间没有很直观的联系,这就需要写些代码来解决了,下面是我的一些经验:
方法/步骤
1获取快捷方式对应的包名 众所周期,每个安卓app依靠一个唯一的包名就行区分,只要能发现这个包名,剩下就简单了。 获取快捷方式需要读写系统设置的权限 读取快捷方式的代码如下:/** * 显示快捷方式信息 * @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的程序,卸载时只是调用卸载界面,但是这个对于我来说足够了。 卸载程序需要的权限: 卸载程序的方法代码: /** * 卸载软件 *@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,世界终于一片清静了。
注意事项
把自己的这一小段经历和大家一起分享,如果大家有更好的方法也请告诉我,谢谢。