如题,项目需要一个程序后台自动升级的功能,具体方法如下void update() {   
    Intent intent = new Intent(Intent.ACTION_VIEW);   
    intent.setDataAndType(Uri.fromFile(new File(Environment   
            .getExternalStorageDirectory(), Config.UPDATE_SAVENAME)),   
            "application/vnd.android.package-archive");   
    startActivity(intent);   

问题是,这种安装APK的方式在安装之前会有一个提示 ,需要用户确认才能继续安装,请问,有木有办法能把这个提示去掉让程序自动更新呢?(PS:别误会。。 我不是想搞病毒,远程控制客户端更新的程序 真心需要这个功能)
各位大大有没有什么好的经验或者处理方法,不吝赐教,谢谢~~盼回复

解决方案 »

  1.   

    PackageManager里有个installPackage方法。不过要和系统下编译才能用呐~
    同事有个批量安装不跳出询问界面的应用,就是用这个方法的。。
      

  2.   

    呵呵...最近刚实现了这个功能...
    提示下楼主:
    在eclipse下编译不行的,代码会出现错误..
    需要系统编译工具mmm模块编译...
      

  3.   

    楼主,你问这问题是不是有点秀逗?
    如果可以,那程序可以满世界下载和悄悄安装,android系统安全何在?
    就算可以,也只能在root过的机器上下手取消安全拦截吧。
    你只要看看很多安装器包括豌豆夹手机精灵都没实现自动安装(usb连线是通过调试模式进行的),你就应该有个结论“我他妈的不该朝这个方向想!”
      

  4.   

    to 4 楼  好的 我仔细研究研究、
    to 5 楼  我不知道你是哪来的勇气说出这么肯定的话的特别是在已经有前人做过回答打前提下,行不行 要试了才知道 不是嘴巴说说的
      

  5.   


    我汗,同学建议你再深入学习下Android!问你几个问题:
    1,adb install 用过吗?  在dos下adb install *.apk时  手机上提示安装了吗?  
    2,pm install 用过吗? 在底层linux下输入命令 pm install *.apk 手机上提示安装了吗?
    3,看过系统源码吗?编译过吗? 
    4,framework层没提供接口,直接使用过底层接口吗?这些你都知道,那你可以把话说的绝对!
    但还是希望同学虚心点,很多东西,自己不能实现,不代表别人不能实现啊!我也不是什么大牛,只是随便说说,望一笑而过....
      

  6.   


    好吧, 问题是解决了。。  不过修改了底层源代码  把它那个 packageInstaller 的apk改掉了。
      

  7.   

    LZ,看看这个帖子:http://aswang.iteye.com/blog/1493552,已经有实现了,呵呵,这个需求是很普遍的啦
      

  8.   


    简单总结一下:
    Root过的机器,怎么都能做
    没Root过的机器,在用户态下,你肯定做不到的
    所以关键是lz你所设计的功能的前提是什么?内置ROM?要求Root?普通应用?
    前两者可以实现,最后一个目前的Android是不可能的
      

  9.   

    下面是我使用的方法,需要android:sharedUserId="android.uid.system"。
    android设备是自己定制的设备,普通手机恐怕不行。 public static String installSliently(String filePath) throws IOException {
    String[] args = { "pm", "install", "-r", filePath };
    ProcessBuilder processBuilder = new ProcessBuilder(args);

    Process process = processBuilder.start();
    try{
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    int read = -1;

    baos.write("err:\n".getBytes());
    InputStream errIs = process.getErrorStream();
    try{
    while ((read = errIs.read()) != -1) {
    baos.write(read);
    }
    }finally{
    errIs.close();
    }
    baos.write('\n');
    baos.write("out:\n".getBytes());
    InputStream inIs = process.getInputStream();
    try{
    while ((read = inIs.read()) != -1) {
    baos.write(read);
    }
    }finally{
    inIs.close();
    }

    byte[] data = baos.toByteArray();
    return new String(data);
    }finally{
    process.destroy();
    }
    }
      

  10.   

    如果获得了root权限可以使用pm安装
      

  11.   

    如果你做第三方app,而不是嵌入ROM,或者没有root权限是不行的吧