android_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > android

android

 2011/1/10 9:44:53  littlenewus  http://littlenewus.javaeye.com  我要评论(0)
  • 摘要:今天看了一则新闻:40%的android应用存在暗地里扣费的问题(被植入扣费代码的应用),如果只是一个apk程序,那么通过读它的permission,看是否含有接收发送短信的权限,再看看这个应用是不是一个基于短信的东西。如果不是,那它存在扣费的风险也挺大的。现在移动的SP扣费虽然已经做了一些保护措施,就是扣费之前会以短信的方式通知用户,让用户发送什么垃圾东西到指定号码,这些扣费垃圾应用估计已经在后台截获这些短信回复指定内容,并能做到不让用户察觉。写个方法,获取所有应用所用到的权限
  • 标签:android

今天看了一则新闻: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();
  }
   }
发表评论
用户名: 匿名