前言:近期专业设的Android的课学到了Android的内部和外部存储,结果由于和老师用的Eclipse开发环境的不同(我用的Android-Studio集成开发环境),所以踩了一些坑…

问题1:内部存储,查看不了data文件夹

解决方法:

  • 切换到sdk安装目录,找到platforms-tools,鼠标聚焦到文件目录栏,输入cmd
  • 回车,进入终端
  • 输入命令 adb shell回车,进入Linux
  • 输入命令 su,回车
  • 输入命令 chmod -R 777 /data/,回车,从而获取目录查看权限
  • 如果需要导出pull,需要有权限才能导出,否则会报错permission denied
  • 可以通过输入两次exit,回退到最初目录下,输入adb root,则可以获取权限。
  • 然后就可以正常查看和操作data目录了。

问题2:外部存储权限和storage文件夹无法访问

外部存储读取权限

由于Adroid6.0读取限权需要自己添加读取权限,所以不仅需要AndroidManifest中添加相应的Permission还需要在访问文件的Java文件中添加访问权限请求,代码如下:

//设置读写权限
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
         "android.permission.READ_EXTERNAL_STORAGE",
         "android.permission.WRITE_EXTERNAL_STORAGE" 
   };
public static void verifyStoragePermissions(Activity activity) {
     try {
          //检测是否有写的权限
          int permission = ActivityCompat.checkSelfPermission(activity,
                  "android.permission.WRITE_EXTERNAL_STORAGE");
          if (permission != PackageManager.PERMISSION_GRANTED) {
              // 没有写的权限,去申请写的权限,会弹出对话框
              ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE);
          }
      } catch (Exception e) {
          e.printStackTrace();
      }
  }

注意:verifyStoragePermission()方法得调用,别忘了…

storage文件访问

  • 仍然是到sdk目录下的platform-tools目录,打开终端,输入命令adb root切换到root角色,才可以正常访问storage文件夹
  • 当导出的时候报错Fail to pull selection 重新选一下左边的Android Device Monitor

最后再附上无法识别adb或adb不是内置的命令的解决方法

这个问题很明显是配置环境的问题,所以需要进行相应环境的配置:

  • 到sdk/platform-tools/目录下,找到以下三个文件,并复制
  • 分别黏贴至c:\windows\system 和 c:\windows\system32目录下
  • 配置环境,此电脑右键属性->高级->环境变量->path 新建两个环境变量,一个指向sdk/tools/ 一个指向sdk/platform-tools/
  • 重启cmd,adb就可识别了。