我写了一个方法,获取了所有已安装软件的apk文件的路径。得知大多数没移到SD的已安装软件的apk都是在data/app下,这个目录在没有Root权限的时候是不能扫描里面的文件,但可以用列举的方法,把所有data/app下的文件显示出来下面说重点,我想通过File.delete()来删除data/app下的文件,例如data/app/XXX.apk,这个方法我在三部手机上全部测试可以执行,delete返回true,但这三部手机全Root过。在一部没有Root的手机上delete返回false,说明不能删若是因为Root的关系,我觉得即便是root的手机也要在应用中申请权限才能使用superuser的功能,但我没有申请,就能返回true另外,有一部小米,它可以手动管理Root权限,我把Root关掉了,就是说所有程序都无法获取Root权限了,手机就和没Root一样,这是我再delete,还是返回true,可以删除那我就纳闷了,在那部没Root的手机上返回false的原因是什么,我可以保证路径是存在的有没有高手遇到过这样的问题,指点我一下,不甚感激!

解决方案 »

  1.   


    捋捋啊
    你有三部已获取root权限的手机(简称A),一部未获取root权限的手机(简称B),一部关掉root权限的小米(简称M);
    你用A和M手机,返回的结果为true;用B手机返回的结果为false;
    你现在问,为什么B手机返回结果为false? () 对吧;我弱弱的想问下,为什么B手机不返回false?为什么M手机会返回true;而不是false呢?
      

  2.   


    小米就是三部root中间一部就是小米不管关不关Root都返回true你的意思是想删除这个路径,得要root是吗?
      

  3.   

    那其它2部手机关root和不关root 返回值是一样的吗?
      

  4.   

    问下应用程序的apk文件是不是放到/data/app下面就能直接用啦???
    安装是怎样一个过程?
      

  5.   


    不是的,必须执行install 过程才可以使用 
      

  6.   

    不是的,必须执行install 过程才可以使用
      

  7.   

    其实install过程除了加个校验和发送广播比直接拷文件过去没多做什么事。只要做系统的时候设置下data目录的权限 就可以左右应用apk是否可以删除里面的文件了
      

  8.   


    谢谢你的回答,请问大多数手机是有这样的权限还是没有呢。这个和Root有关系吗?
      

  9.   

    不排除有些手机image对/data/app权限做过修改
    默认是644,也有可能是其它权限不一样所致
      

  10.   


    去网上搜一下linux用户权限管理
    rwx-rwx-rwx
      

  11.   

    试试adb uninstall com.xxx.xxx(包名),如果是系统预装的AP,一般使用adb shell rm system/app/xxx.apk,通常下载的APK安装的时候是放在data/app目录下,其实和用adb install xxx.apk的效果一样
      

  12.   


    请问楼主,我现在也在做这个,为什么我用File.Delete()方法就删除不了data/app下面的apk呢,我的手机也root了。。