android提供静默安装方法 ,可是当我调用的时候告诉我说不能申请安装的权限,可是我的权限已经在mainfest.xml添加了,我想问下这个是怎么回事,希望高手给解答下。

解决方案 »

  1.   

    还是权限问题,如果手机root了,那可以调用隐藏的api实现静默安装。
    还看到过一个帖子说是,使用android:sharedUserId="android.uid.system"属性来使应用程序获得系统权限。
    这样通过Runtime.getRuntime().exec("pm install -r ... ")方法来实现安装,没有试过,感觉也够呛
      

  2.   

    android:sharedUserId="android.uid.system 这样就不能获取到sdcard的信息了。
    我用过pm install -r这个在pc端就好用 但是在代码里就需要权限。
    我现在其实想知道 代码里是否可以实现静默安装
      

  3.   

    PackageManager pm = getPackageManager();
    pm.installPackage(Uri.fromFile(new File(apk_filepath)), installobserver, 0, null);这个是未开放的api,使用的需要和整个sources编译,或者使用反射机制(我也没有用过)。
    权限的话,加上
    <uses-permission android:name="android.permission.INSTALL_PACKAGES"></uses-permission>
    <uses-permission android:name="android.permission.DELETE_PACKAGES"></uses-permission>
    <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA"></uses-permission>
    <uses-permission android:name="android.permission.CLEAR_APP_CACHE"></uses-permission>
      

  4.   

    哦,这个我是在apk的android.mk中加上了LOCAL_CERTIFICATE := platform
      

  5.   

    你能把你的android.mk给我看看吗这个怎么使用啊?
      

  6.   

    LOCAL_PATH:= $(call my-dir)
    include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_PACKAGE_NAME := apk_pkg_name
    LOCAL_CERTIFICATE := platforminclude $(BUILD_PACKAGE)
      

  7.   

    其实设置sharedUserId与实现静默安装根本就没关系
    和所运行的环境保持签名一致或者内置或者获取了root权限才是解决办法
    请参考:
    http://blog.csdn.net/sodino/archive/2011/03/10/6238818.aspx
    [Android]实现静默安装APK的两种方法