快速解决设置Android 23.0以上版本对SD卡的读写权限无效的问题

对Android的SD卡进行读取权限设置时:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

结果报错:

依然提示我没有权限,于是百度说是版本问题,23.0版本(笔者的版本是25.0)以上的不仅仅要设置上面的权限,还要在对SD卡有读写操作的地方授权,下面是公共类:

public class PermisionUtils {

 // Storage Permissions
 private static final int REQUEST_EXTERNAL_STORAGE = 1;
 private static String[] PERMISSIONS_STORAGE = {
   Manifest.permission.READ_EXTERNAL_STORAGE,
   Manifest.permission.WRITE_EXTERNAL_STORAGE};

 /**
  * Checks if the app has permission to write to device storage
  * If the app does not has permission then the user will be prompted to
  * grant permissions
  *
  * @param activity
  */
 public static void verifyStoragePermissions(Activity activity) {
  // Check if we have write permission
  int permission = ActivityCompat.checkSelfPermission(activity,
    Manifest.permission.WRITE_EXTERNAL_STORAGE);

  if (permission != PackageManager.PERMISSION_GRANTED) {
   // We don't have permission so prompt the user
   ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,
     REQUEST_EXTERNAL_STORAGE);
  }
 }
}

然后直接在需要授权的地方调用:

 //检测读写权限
 PermisionUtils.verifyStoragePermissions(this);

程序运行的时候,会询问是否授权

点击授权即可。

以上这篇快速解决设置Android 23.0以上版本对SD卡的读写权限无效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 解决android6.0以上不能读取外部存储权限的问题

    通过内容提供者获取手机sdcard本地视频时, /** * 从本地的sdcard得到数据 * //1.遍历sdcard,后缀名 * //2.从内容提供者里面获取视频 * //3.如果是6.0的系统,动态获取读取sdcard的权限 */ private void getDataFromLocal() { new Thread(){ @Override public void run() { super.run(); // isGrantExternalRW((Activity) context);

  • 快速解决安卓7.0系统写入SD卡权限失败的问题

    如图所示,在mainfest文件中声明了SD卡的读和写权限,仍旧报错: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permi

  • android检测SD卡读写权限方法

    一.解析 做项目遇到了一个棘手的问题,SD卡的读写权限问题. 1.android版本在6.0以上版本时,以下代码才有用: if (Build.VERSION.SDK_INT >= 23) { UiUtils.getInstance().showToast("1"); //减少是否拥有权限checkCallPhonePermission != PackageManager.PERMISSION_GRANTED int checkCallPhonePermission = Conte

  • 解决Android 5.1限制外置SD卡写入权限的问题

    在Android开发者网站的 "外部存储技术信息"文档中描述道 : WRITE_EXTERNAL_STORAGE只为设备上的主要外部存储授予写权限,应用程序无法将数据写入二级外部存储设备,除非综合权限指定了应用程序的包目录.这目前只影响双存储设备,如果你的设备有内部存储空间,即通常所说的机身存储,那么你的SD卡就是一个二级外部存储设备. 在Android 4.4中,如果你同时使用了机身存储和SD卡, 那么应用程序将无法在SD卡中创建.修改.删除数据.比如,你无法使用酷我音乐盒下载保存M

  • 快速解决设置Android 23.0以上版本对SD卡的读写权限无效的问题

    对Android的SD卡进行读取权限设置时: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 结果报错: 依然提示我没有权限,于是百度说是版本问题,23.0版本(笔者的版本是25.0)以上的

  • 快速解决C# android base-64 字符数组的无效长度问题

    解决方法: 在android向C# 后台发送图片的时候,把图片转成字符串发送的时候出现 base-64 字符数组的无效长度 错误应该在传递参数前,使用Replace("+", "%2B"),后台接收后用Replace("%2B", "+"),这样一替换,问题就解决了 以上这篇快速解决C# android base-64 字符数组的无效长度问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • android 拷贝sqlite数据库到本地sd卡的方法

    sqlite小型数据库,在开发的时候用于保存数据,在这不做关于它的介绍,本文只是写出了怎么拷贝应用的数据到本地sd卡中.如:一个数据库名为dandy.db的,拷贝到本地中叫seeker.db 代码如下: /** * 拷贝数据库到sd卡 * * @deprecated <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> */ public static void copyDat

  • android将Bitmap对象保存到SD卡中的方法

    本文实例讲述了android将Bitmap对象保存到SD卡中的方法.分享给大家供大家参考.具体如下: Bitmap logoBitmap = BitmapFactory.decodeResource(mcontext.getResources(), R.drawable.arcnote_logo); ByteArrayOutputStream logoStream = new ByteArrayOutputStream(); boolean res = logoBitmap.compress(B

  • Android 6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法

    为提供更高的数据保护 Android6.0版本上增加了关于Wifi和蓝牙的权限. 蓝牙搜索到设备需要用到定位服务,所以在开发中 targetSdkVersion 大于等于23(6.0) 需要在代码中进行权限获取 需要在配置文件中申请两个权限: <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="an

  • Android实现复制Assets文件到SD卡

    Assets文件介绍 assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件. 1. 先在Activity里面调用getAssets() 来获取AssetManager引用. 2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream. 3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得i

  • Android 7.0以上版本实现应用内语言切换的方法

    前言 项目里有个功能,在应用内切换语言,之前上线了大半年,一直都是正常运行,但是最近这次发版以后,在国外的同事反馈(这里面还包括CEO... 尴尬),他们的华为手机上出现了中英文混乱的问题.本文记录了解决问题的过程和方法. 正文 首先这部分功能的代码是之前已经离职的同事留下的,一直跑得好好的,我也没去动过,发版前用别的手机测试也没有出现问题,怎么突然就出现中英文混乱了呢?难道是华为的锅?国外同事的手机没法拿来调试,听说他们也都是在国内买了带到国外去的,后来我也在身边找了几个华为手机试了一下,并没

  • android读取Assets图片资源保存到SD卡实例

    复制代码 代码如下: public class ReadBitmap { public void readByte(Context c, String name, int indexInt) { byte[] b = null; int[] intArrat = c.getResources().getIntArray(indexInt); try { AssetManager am = null; am = c.getAssets(); InputStream is = am.open(nam

  • Android4.4下MediaProvider无法向外置SD卡中文件写数据的解决方法

    本文实例讲述了Android4.4下MediaProvider无法向外置SD卡中文件写数据的解决方法.分享给大家供大家参考,具体如下: Android4.4平台限制应用对外置SD卡的读写权限.MediaProvider通过 checkAccess方法 限制对外置SD卡的读写. private void checkAccess(Uri uri, File file, int modeBits) throws FileNotFoundException { final boolean isWrite

随机推荐