今天看了一则新闻:40%的android应用存在暗地里扣费的问题(被植入扣费代码的应用),如果只是一个apk程序,那么通过读它的permission,看是否含有接收
发送短信的权限,再看看这个应用是不是一个基于短信的东西。如果不是,那它存在扣费的风险也挺大的。现在移动的SP扣费虽然已经做了一些保护措施,就是扣费之前会以短信的方式通知用户,让用户发送什么垃圾东西到指定号码,这些扣费垃圾应用估计已经在后台截获这些短信回复指定内容,并能做到不让用户察觉。
写个方法,获取所有应用所用到的权限:
/**
* 获取已经安装的应用所用到的权限
*/
private void fetchAllAppPermissions(){
PackageManager manager = getPackageManager();
List<PackageInfo> pkgList = manager.getInstalledPackages(PackageManager.GET_PERMISSIONS);
PackageInfo pkg = null;
StringBuffer sb = new StringBuffer();
String[] permissions = null;
for (int i = 0; i < pkgList.size(); i++) {
pkg = pkgList.get(i);
permissions = pkg.requestedPermissions;
sb.append(pkg.packageName).append("\r\n");
if (null != permissions && permissions.length > 0) {
for (String permission : permissions) {
sb.append(permission).append("\r\n");
}
}
sb.append("\r\n");
}
//保存成文件
File file = new File(Environment.getExternalStorageDirectory()+File.separator+"permissions.txt");
if(file.exists()){
file.delete();
}
try {
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
fos.write(sb.toString().getBytes());
fos.flush();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}