精华内容
下载资源
问答
  • sd卡权限

    2016-05-12 10:22:20
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <protected-broadcast android:name="android.intent.action.MEDIA_MOUNTED" />
    展开全文
  • 主要介绍了androidQ sd卡权限使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Android添加sd卡权限

    千次阅读 2020-05-16 20:09:24
    Android添加sd卡权限 1.在AndroidManifest.xml中添加 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_...

    Android添加sd卡权限

    1.在AndroidManifest.xml中添加

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

    2.再在想引用的地方添加verifyPermission函数

    public void verifyPermission(Context context) {
        int permission = ActivityCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (permission != PackageManager.PERMISSION_GRANTED) {
            // We don't have permission so prompt the user
            ActivityCompat.requestPermissions(
                    MainActivity.this,
                    PERMISSIONS_STORAGE,
                    REQUEST_EXTERNAL_STORAGE);
        }
    }
    

    3.在onCreate函数中添加

    verifyPermission(MainActivity.this)
    
    展开全文
  • Android 6.0 读写SD卡权限问题

    万次阅读 2016-11-18 22:00:00
    Android 6.0 读写SD卡权限问题, 运行时权限检查 Android M SD卡读写权限

    一、问题描述

    Android 6.0 下默认存储SD卡,使用原生FMRadio生成的文件保存到内部存储中
    【预置条件】插入T卡
    【操作步骤】设置>存储设备和USB>选择SD卡为默认存储>收音机录音
    【实际结果】收音机的录音文件未保存到T卡
    【预期结果】收音机的录音文件保存到T卡
    【复现概率】10/10
    此外,SoundRecorder默认存储SD卡,生成的文件却可以保存到SD卡中

    二、问题分析

    1、收音机文件没有保存到指定的SD卡目录下,因此可能是文件的路径不对。
    2、进入设置中,切换默认存储位置,内部存储或者SD卡,每次切换都会修改系统中某一属性值。
    3、当收音机文件保存的时候,必须要读取当前系统的默认存储路径,然后生成自己的文件路径。

    三、解决方案

    STEP1、初步解决方案,但没有生效,引入新问题

    对比SoundRecorder,根据GIT库中,之前的同事的修改记录,找到可能的解决方案,修改如下:
    1) 修改了packages/apps/FMRadio/AndroidManifest.xml文件添加
    2) 修改packages/apps/FMRadio/src/com/android/fmradio/FmRecorder.java文件
    添加import com.mediatek.storage.StorageManagerEx;语句
    替换startRecording函数String recordingSdcard = FmUtils.getDefaultStoragePath();为String recordingSdcard = StorageManagerEx.getDefaultPath();
    引入新的问题,此时,点击 Start Recording 会提示内部错误。

    分析Log发现,由于权限拒绝,抛出IO异常
    01-01 07:35:38.167 7467 7467 W System.err: java.io.IOException: open failed: EACCES (Permission denied)

    STEP2、Android6.0中的运行时请求权限

    分析由于权限问题后,结合Android M new design,开始查找文档,寻找解决Android M 下SD卡读写权限问题
    Android6.0中的运行时请求权限
    后来,试了好几种方法,但都没有用,以及报问题“EACCES (Permission denied)”

    STEP3、再分析可能是运行时权限问题

    判断APP运行时权限如下:
    - adb remount;//挂载
    - adb shell;//进入shell
    - ps | grep fmradio;//查找FMRadio的PID,前提是手机打开FMRadio,插入耳机
    - cd proc/4830;//进入PID对应的信息文件中
    - cat status;//查看进程信息

    进程号

    发现此时,FMRadio对于的组权限如下:
    com.android.fmradio Groups: 1013 3002 3003 9997 50010
    com.android.soundrecorder Groups: 1015 1023 3003 9997 50105

    根据系统权限的定义,有兴趣的同学可以去看一下这个文件
    system/core/include/private/android_filesystem_config.h
    分析这些Gid发现:
    1015 为sdcard_rw,1023 为media_rw权限

    因此,得出结论如下
    1、首先修改AndroidManifest.xml文件,新增权限,确保FMRadio应用级的权限;
    2、原生FMRadio使用过程中,会进行运行时的权限检查,故FMRadio运行时应该拿到了WRITE_EXTERNAL_STORAGE,以及READ_EXTERNAL_STORAGE权限,
    3、但是由于FMRadio本身不具备“1015,1023”组权限,这些权限无效,仍然无法对SD卡进行读写操作。

    STEP4、最终解决方案

    在STEP1的修改基础上,在框架层,权限对应组中给予FMRadio相应的组权限,新增修改如下:
    frameworks/base/data/etc/platform.xml

    <---add XXX begin -->
    <permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
    <group gid="sdcard_rw" />
    <group gid="media_rw" />
    </permission>
    <---add XXX end -->

    重编framework.jar, 将修改后的jar文件push到手机,重启
    组权限
    此时,再检查FMRadio对于的组权限如下:
    com.android.fmradio Groups: 1013 1015 1023 3002 3003 9997 50010

    到此为止,

    • 修改重编framework.jar,
    • 修改重编FMRadio.apk,再清除数据
    • 以上push到手机,
    • 重启验证,可以保存到SD卡

    STEP5、最简单的方法—-push之后重启手机

    1、修改了packages/apps/FMRadio/AndroidManifest.xml文件添加
    2、修改packages/apps/FMRadio/src/com/android/fmradio/FmRecorder.java文件
    添加import com.mediatek.storage.StorageManagerEx;语句
    替换startRecording函数String recordingSdcard = FmUtils.getDefaultStoragePath();为String recordingSdcard = StorageManagerEx.getDefaultPath();

    其实之前的方法是正确的,push修改后的FMRadio之后,重启一下手机即可。
    当时没有生效的原因是,从L版本开始,apk直接push就不生效了,要push+重启才可以,因为PMS取消了各个路径下的observer,直接push不会生效,重启才会重新扫描。

    这里向大家主要提到两个文件
    1、电脑代码区文件:frameworks/base/data/etc/platform.xml
    这个文件中定义了底层权限组GID和高层权限名字之间的对应关系
    其实,在这个文件已经定义过了

    <permission name="android.permission.WRITE_MEDIA_STORAGE" >
    <group gid="media_rw" />
    <group gid="sdcard_rw" />
    </permission>

    故我们只需要在AndroidManifest.xml,添加即可grant FMRadio SD卡读写权限。
    2、手机数据区文件:data/system/packages.xml
    这个文件由PackageManagerService.Java生成,里面记录了系统当中安装的APK的所有属性,权限等信息。L之前,当系统中的APK安装、删除、升级时,文件就会被更新。L之后,重启才会重新扫描更新该文件。

    push后,重启前

     <package name="com.android.fmradio" codePath="/system/priv-app/FMRadio" nativeLibraryPath="/system/priv-app/FMRadio/lib" primaryCpuAbi="arm64-v8a" publicFlags="940097093" privateFlags="8" pkgFlagsEx="0" ft="151fd3402d8" it="158575d1d70" ut="151fd3402d8" version="2" userId="10010">
    <sigs count="1">
        <cert index="0" key=“……” />
    </sigs>
    <perms>
        <item name="android.permission.MODIFY_AUDIO_SETTINGS" granted="true" flags="0" />
        <item name="android.permission.MODIFY_AUDIO_ROUTING" granted="true" flags="0" />
        <item name="android.permission.ACCESS_MOCK_LOCATION" granted="true" flags="0" />
        <item name="android.permission.ACCESS_FM_RADIO" granted="true" flags="0" />
        <item name="android.permission.BLUETOOTH" granted="true" flags="0" />
        <item name="android.permission.INTERNET" granted="true" flags="0" />
        <item name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" granted="true" flags="0" />
        <item name="android.permission.INTERACT_ACROSS_USERS" granted="true" flags="0" />
        <item name="android.permission.WAKE_LOCK" granted="true" flags="0" />
    </perms>
    <proper-signing-keyset identifier="1" />
    </package>

    重启后

    <package 
    name="com.android.fmradio" codePath="/system/priv-app/FMRadio" nativeLibraryPath="/system/priv-app/FMRadio/lib" primaryCpuAbi="arm64-v8a" publicFlags="940097093" privateFlags="8" pkgFlagsEx="0" ft="151fda9d6e8" it="158575d1d70" ut="151fda9d6e8" version="2" userId="10010">
    <sigs count="1">
        <cert index="0" key="……" />
    </sigs>
    <perms>
        <item name="android.permission.MODIFY_AUDIO_SETTINGS" granted="true" flags="0" />
        <item name="android.permission.MODIFY_AUDIO_ROUTING" granted="true" flags="0" />
        <item name="android.permission.ACCESS_MOCK_LOCATION" granted="true" flags="0" />
        <item name="android.permission.ACCESS_FM_RADIO" granted="true" flags="0" />
        <item name="android.permission.BLUETOOTH" granted="true" flags="0" />
        <item name="android.permission.WRITE_MEDIA_STORAGE" granted="true" flags="0" />**
        <item name="android.permission.INTERNET" granted="true" flags="0" />
        <item name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" granted="true" flags="0" />
        <item name="android.permission.INTERACT_ACROSS_USERS" granted="true" flags="0" />
        <item name="android.permission.WAKE_LOCK" granted="true" flags="0" />
    </perms>
    <proper-signing-keyset identifier="1" />
    </package>

    未完待续……

    展开全文
  • 今天小编就为大家分享一篇快速解决安卓7.0系统写入SD卡权限失败的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • flutter 获取手机的权限---SD卡权限

    千次阅读 2020-02-02 20:53:19
    flutter是跨平台的移动技术,当然也摆脱不了设备的授权问题,如android 设备中清单文件里的各种权限配置,以及到Android 6.0 的动态权限配置,...找到Android模块的清单文件,配置对应的sd卡权限。 <uses-permi...

    flutter是跨平台的移动技术,当然也摆脱不了设备的授权问题,如android 设备中清单文件里的各种权限配置,以及到Android 6.0 的动态权限配置,Flutter也有相对应的功能要处理。接下来基于Android系统读写SD的权限做一个简单的讲解。(相关IOS的权限请自行查阅)
    1.清单文件配置权限
    找到Android模块的清单文件,配置对应的sd卡权限。

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

    2.配置动态权限,现在Android手机设备几乎全都是6.0以上的系统,所以免不了要配置动态权限。在flutter中,我们使用permission_handler: ^3.2.0 插件给大家演示效果。动态权限也分为几个部分;

    • 检查当前应用是否已经拥有了相关权限
      /**
       * 检查是否有相关权限
       */
      void checkPermissionStatus() {
        final Future<PermissionStatus> statusFuture =
        PermissionHandler().checkPermissionStatus(PermissionGroup.storage);
    
        statusFuture.then((PermissionStatus status) {
          setState(() {
            _permissionStatus = status;
          });
        });
      }
    
    • 根据检查权限的结果,决定是否要请求权限的授权,也就是请求权限授权
     /**
      * 请求系统权限,让用户确认授权
       */
      Future requestPermission() async {
        List<PermissionGroup> permissions = <PermissionGroup>[
          PermissionGroup.storage
        ];
        Map<PermissionGroup, PermissionStatus> permissionMap =
            await PermissionHandler().requestPermissions(permissions);
    
        setState(() {
          _permissionStatus = permissionMap[PermissionGroup.storage];
        });
      }
    
    
    • 根据权限的结果,执行相关逻辑
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text("检查读写SD卡权限"),
          ),
          body: Column(
            children: <Widget>[
              RaisedButton(
                child: Text("检查是否拥有权限--读写外部卡"),
                onPressed: checkPermissionStatus,
              ),
              Text(
                "检查权限结果:" + hasPermissionText(_permissionStatus),
              ),
              RaisedButton(
                child: Text("请求权限"),
                onPressed: requestPermission,
              ),
              Text(
                "获取权限结果:" + getPermissionResult(_permissionStatus),
              )
            ],
          ),
        );
      }
    

    最终效果图

    展开全文
  • Android读写sd卡权限问题动态添加权限:”https://www.jianshu.com/p/d349047e6515 添加权限: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission ...
  • 在上一篇文章安卓如何申请sd卡权限并写入文件已经解决了向sd卡里面写入文件的问题了,解决办法需要startActivity,然后在onActivityResult方法里面去监听是否授权成功,这种方法对当前Activity的侵入性太强了,如何...
  • Android 10 中读写SD卡权限的问题

    千次阅读 2020-04-24 21:57:24
    记一次在android的学习中遇到的SD卡权限问题。最开始题主本来是想做一个小的demo来操作SD卡。如图所示: 没想到在开发的过程中遇到了权限问题。 首先贴一下activity的代码。其实就是三个按钮,绑定三个事件。 ...
  • 现在android 9.0是如何读取外置SD卡权限的?我试过动态和静态申请都不行,在线等,急急急~ 听别人说用DocumentUI,这个怎样用,网上搜到的方法很少~
  • Android6 0 读写SD卡权限动态申请
  • 之前公司的应用是在MainActivity中申请读写SD卡权限,如果用户选择了拒绝,那么直接弹窗提示用户必须赋予SD卡读写权限,否则将直接退出应用。虽然微信等app都是这样的逻辑,但是还是觉得很不友好。在如今这个Android...
  • 获取SD卡权限

    2019-03-09 02:30:52
    一、解析 做项目遇到了一个棘手的问题,SD卡的读写权限问题。 1.android版本在6.0以上版本时,以下代码才有用: if (Build.VERSION.SDK_INT >= 23) { UiUtils.getInstance().showToast(“1”); //...
  • SD 卡权限动态申请

    2019-07-29 10:37:06
    Android6.0之后系统对权限的管理更加严格了,...下面是动态申请SD卡读写的权限 在AndroidManifest中添加SD卡读写的权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ...
  • android SD卡权限问题

    2018-11-21 10:32:44
    要写个文件管理器 向SD卡写数据 现在我网上找了找 只有一个可行的办法 就是先要打开一个Activity 大概意识是 用这个Activity可以给SD卡等路径授权 new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);就这个 我想问 ...
  • 设置读取SD卡权限的问题

    千次阅读 2015-08-04 16:06:09
    在极客学院的Android项目实战中,有个记事本项目,由于视频中没有讲到在哪里加应用的读取SD卡权限问题,导致拍摄的照片和视频都无法存到SD卡中,在网上到处查之后,终于解决了。 在Android的Manifest文件中: xml ...
  • android SD卡权限

    2016-09-08 13:28:16
    在操作SD卡时添加了 <!-- 在文件写入权限 --> <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUN
  • android 获取SD 卡权限

    2019-12-02 11:10:51
    Java层获取权限: void GetExternalStoragePermission() { if(!CheckExternalStoragePermission()) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission...
  • 安卓如何申请sd卡权限并写入文件

    千次阅读 2019-09-20 19:33:22
    最近项目有需求,需要向sd卡写入文件,在网上找了一大堆文章,很多文章都是吧Internal Storage当成了sd卡,到最后解决办法都变成了如何动态申请权限了。 在此记录一下我的解决办法,在安卓4.4之后,使用android....
  • Android获得SD卡权限

    万次阅读 2018-05-30 22:10:08
    加两行代码在MainActivity.xml中 &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&gt; &lt;uses-permission android:name="android.permission.MOUNT_...
  • android 写SD卡权限

    2017-05-03 09:58:49
    增加一个权限,变成系统APP android:sharedUserId="android.uid.system”
  • 展开全部在2.x的版本中,在manifest中配置的权限e68a843231313335323631343130323136353331333365643662android.permission.WRITE_EXTERNAL_STORAGE确实是用来使得sd卡获得写的权限。而在4.0开发的源码当中,由于有...
  • android写sd卡权限

    2013-03-27 15:27:13
    在开发andriod程序,写sd卡的时候,出现IOException:permission denied, 而且已经设置好了,且设置了sd卡。 还是错误,可以重新建一个工程,只写write操作。可以尝试重新发布apk。
  • Android7.0适配SD卡权限

    2019-09-17 16:41:31
    之前APP中有一个功能,版本更新下载新的APK文件之后,直接打开系统的安装页面。原来的代码如下: private void install(File apkFile) { Uri uri = Uri.fromFile(apkFile); Intent local...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,241
精华内容 896
关键字:

sd卡权限