Android文件存储

2017-06-21  本文已影响0人  我想成为创业者
网上找的截图

由图可以看出
Environment.getExternalStorageDirectory()方法存储6.0以后需要用户授权,在该方法下app卸载之后数据还保留在SDCard中,留下了垃圾数据。

Context.getExternalFilesDir()Context.getExternalCacheDir()getFilesDir()getCacheDir()相同点:

app卸载后,目录下的数据都会被清空。

Context.getExternalFilesDir()Context.getExternalCacheDir()getFilesDir()getCacheDir()不同点:

  1. 目录的路径不同:前两个的目录在外部SD卡上。后两个的目录在app内部存储上。
  1. 前两个的路径在手机里可以直接看到。后两个的路径需要root以后,用Root Explorer 文件管理器才能看到。
  2. Context.getExternalFilesDir()和getFilesDir()用来存储一些长时间保存的数据(手机助手在清理垃圾时不会清理掉),Context.getExternalCacheDir()、getCacheDir()用来存储一些临时缓存数据(手机助手在清理垃圾时能清理掉)
/**获取app缓存路径
*/
publicStringgetCachePath(Contextcontext) {
    String  cachePath;
    if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) || !Environment.isExternalStorageRemovable()) {
        cachePath = context.getExternalCacheDir().getPath();//外部存储可用
    }else{
        cachePath = context.getCacheDir().getPath();//外部存储不可用
    }
    returncachePath;
}

个人遇到的问题

//修改apk权限
public static voidchmod(Stringpermission,Stringpath) {
  try{
    String command ="chmod "+ permission +" "+ path;
    Runtime runtime =Runtime.getRuntime();
    runtime.exec(command);
    }catch(IOExceptione) {
     e.printStackTrace();
   }
}

private void installApk() {
    chmod("777",apkFile.getPath());
    Intent intent =new Intent(Intent.ACTION_VIEW);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setDataAndType(Uri.fromFile(apkFile),"application/vnd.android.package-archive");
    startActivity(intent);
}
上一篇下一篇

猜你喜欢

热点阅读