apk的静默卸载(不出现卸载界面,卸载过程后台进行),该如何实现呢,求高手指点!

解决方案 »

  1.   

    改framework代码么?
    不改估计不行 
      

  2.   

    删掉data/data下对应的包名目录(需要root权限
      

  3.   

    Q: 如何获取root权限呢?
    A: 前提是手机已经root过,没有root过的手机无法取得root权限。
            /**
     * 判断手机是否已获取Root权限
     */
    private boolean isRoot() {
    File su = new File("/system/bin/su");
    return su.exists();
    }
    然后你可以用Linux命令来操作,搜索下busybox
      

  4.   


    如何在自己的应用中实现root呢?
      

  5.   

    实际上可以= =前两天老师给我们讲了个android安全专题,分析了一些某个病毒,该病毒特征是先检查你的手机是否有root权限,没有就通过栈溢出什么的一个漏洞来帮你root。然后再后台悄悄执行一些二进制文件,偷偷的下载某个应用,然后又偷偷的删掉。。都是在你锁机的时候实现的。。但如果没深入研究过android的源码和linux机制,是不可能实现的
      

  6.   

    pc上直接adb卸载是安静的。嘿嘿
      

  7.   

    回复7楼:实际上可以的,我曾经用这种方式来清理应用程序缓存,即删除对应的文件夹(data/data/应用程序包名/cache)。回复6楼:在自己的应用程序中实现root是不可能的,就好比一个房子设计的就没有门没有窗户,你却想进去。除非这个房子有门窗(已Root),你才可以进去(使用Linux命令),当然,进去之前,会有个看门的(一个叫做“授权管理”的程序,手机Root过就有了)提醒户主,户主同意了,你才能进去
      

  8.   

    楼主难道没用过Android手机?或者是没有亲自体会过Android手机Root的过程?
      

  9.   


    楼主估计体会到,不是所有的用户都有root权限,
      

  10.   

    是可以的,本人正在写一个类似软件,实现批量安装、卸载软件,而不弹出任何提示!(无需root)
      

  11.   


    http://hi.baidu.com/lizhengjun2010/blog/item/aa23d1b01d63356c8ad4b26f.html
      

  12.   

    如果android应用程序仅仅是data/app 和 data/data 
    删除这两个文件就可以的话
    你让建配置文件和缓存下载文件的应用情何以堪
      

  13.   

    分享,楼主的实现是在源码下编译的,用到了packageManager是一个抽象类,其子类MockPackageManager实现了父类的抽象方法,为
        /**
         * @hide - to match hiding in superclass
         */
        @Override
        public void installPackage(Uri packageURI, IPackageInstallObserver observer,
                int flags, String installerPackageName) {
            throw new UnsupportedOperationException();
        }大家懂了吧不过我没在framework下编译过,不知道会遇到哪些困难
      

  14.   

    et上的app 安装不即是如此。
      

  15.   

    PackageManager有提供静默卸载和安装的接口,但前提是调用方需要有system权限, 
    你可以在Manifest头部声明个
    android:sharedUserId="android.uid.system"静默安装用的是下面的接口,你看看PackageManager文档找找卸载的接口试下吧
    //需要进程有系统权限 
    getPackageManager().installPackage(Uri.parse("file://" + mDownFileName), null, PackageManager.INSTALL_REPLACE_EXISTING, null);
      

  16.   

    我把1.5版本中有关IPackageInstallObserver的类抽出来放在在2.33里头,按理来说有了这几个接口了撒,为啥用不到?去继承的时候老是有错,郁闷。谷歌是存心气人啊,有那位大哥弄出来了q一声好吗,快折磨疯了,531412061
      

  17.   


    不用继承,通过反射可以找到方法,只是我们的apk没有权限,故不能用。
      

  18.   

    哥们,怎么个反射法,能说谢点吗?我刚接触android不久,能不能指点下,谢谢了
      

  19.   

    要实现静默安装必须有System权限,可以通过把APK和OS一起打包在system/app目录下面,或者APK获取system签名,网上有很多获取system签名的方法。静默安装实现原理都是通过调用PackageManager里的InstallPackage来实现的,这个APK是隐藏的,如果要调用还必须从源码中找到对应的class并导入class文件才能编译通过(如果是前一种方法和OS一起编译就不需要)
      

  20.   

    有root权限,简单, 直接到 /data/app/ 目录下删掉就好了。android通过inotify,对/system/app/和/data/app/目录做了监控,实现拷贝即安装,删除即卸载功能。/data/app/目录下的apk名字命名还非常规律,非常适合做卸载。 apk的命名都是: <包名>-<数字>.apk/system/app/下的apk是卸载不了的,这是固件集成的,强制删除也不合理 
      

  21.   


    /system/app 也是可以强制删除的,挂载下就好了