问题来源:
目前开发的应用有个需求,就是在没有SD的时候,可以将下载的apk文件写入/data/data/<packageName>/cache/目录下,并改变文件的权限,让安装程序可以读取它并安装。目前已经知道,通过getcacheDir()可以获取应用缓存目录的路径,那么便可以将apk文件写入到该目录下了。但是在改变该文件权限时,问题来了:android api openFileoutput(string filename,int mopde),因为filename不能有分隔符,所以接口只能改变/data/data/<packageName>/file/目录下文件的权限。
请教大神,什么方法能够改变/data/data/<packageName>/cache/目录下文件的权限,让第三方程序(如安装程序)可以访问呢?

解决方案 »

  1.   

    如果设置同样的ShareUsrId可以解决问题吗?
      

  2.   

    /**
     * 修改apk权限
     * @param permission
     * @param path apk所在的cache下面的路径
     */
    public static void chmod(String permission, String path) {
    try {
    String command = "chmod " + permission + " " + path;
    Runtime runtime = Runtime.getRuntime();
    runtime.exec(command);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
           你在打开apk前执行这个方法就行了。
           例:
           chmod("777",apkPath);// 修改apk权限,否则会出现包解析异常
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setDataAndType(Uri.parse("file://"+apkPath), "application/vnd.android.package-archive");
    mContext.startActivity(intent);