android6.0中如何写入SD卡权限
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本文小编为大家详细介绍"android6.0中如何写入SD卡权限",内容详细,步骤清晰,细节处理妥当,希望这篇"android6.0中如何写入SD卡权限"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢
千家信息网最后更新 2025年11月07日android6.0中如何写入SD卡权限
本文小编为大家详细介绍"android6.0中如何写入SD卡权限",内容详细,步骤清晰,细节处理妥当,希望这篇"android6.0中如何写入SD卡权限"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
代码如下:
package com.example.admin.sdapplication;import android.Manifest;import android.app.Dialog;import android.content.DialogInterface;import android.content.pm.PackageManager;import android.os.Build;import android.os.Bundle;import android.os.Environment;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.Button;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStreamReader;public class SdkActivity extends AppCompatActivity implements View.OnClickListener{ private Button btn_write; private Button btn_read; final int REQUEST_WRITE=1;//申请权限的请求码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sdk); btn_write= (Button) findViewById(R.id.btn_write); btn_read= (Button) findViewById(R.id.btn_read); btn_read.setOnClickListener(this); btn_write.setOnClickListener(this); } private void showAlert(){ Dialog alertDialog = new AlertDialog.Builder(this). setTitle("权限说明"). setMessage("我们需要这个权限给你提供存储服务"). setIcon(R.drawable.ic_launcher). setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub //2、申请权限: 参数二:权限的数组;参数三:请求码 ActivityCompat.requestPermissions(SdkActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_WRITE); } }). setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }). create(); alertDialog.show(); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.btn_read: String s= readToSdCard(); Log.i("readTosdCard",s); break; case R.id.btn_write: //判断是否6.0以上的手机 不是就不用 if(Build.VERSION.SDK_INT>=23){ //判断是否有这个权限 if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){ //第一请求权限被取消显示的判断,一般可以不写 if (ActivityCompat.shouldShowRequestPermissionRationale(SdkActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)){ Log.i("readTosdCard","我们需要这个权限给你提供存储服务"); showAlert(); }else { //2、申请权限: 参数二:权限的数组;参数三:请求码 ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_WRITE); } }else { writeToSdCard(); } } else{ writeToSdCard(); } break; } } //写数据 public void writeToSdCard(){ //1、判断sd卡是否可用 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ //sd卡可用 //2、获取sd卡路径 File sdFile=Environment.getExternalStorageDirectory(); File path=new File(sdFile,"a.txt");//sd卡下面的a.txt文件 参数 前面 是目录 后面是文件 try { FileOutputStream fileOutputStream=new FileOutputStream(path); fileOutputStream.write("hello".getBytes()); } catch (Exception e) { e.printStackTrace(); } } } //读数据 public String readToSdCard(){ StringBuilder stringBuilder = null; if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ File sdFile=Environment.getExternalStorageDirectory(); File path=new File(sdFile,"a.txt"); stringBuilder =new StringBuilder(); try { FileInputStream fileInputStream=new FileInputStream(path); BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(fileInputStream)); String str; while ((str=bufferedReader.readLine())!=null){ stringBuilder.append(str); } } catch (Exception e) { e.printStackTrace(); } } return stringBuilder.toString(); } //判断授权的方法 授权成功直接调用写入方法 这是监听的回调 //参数 上下文 授权结果的数组 申请授权的数组 @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if(requestCode==REQUEST_WRITE&&grantResults[0]== PackageManager.PERMISSION_GRANTED){ writeToSdCard(); } }}其实就是判断是不是6.0的手机再进行申请权限的处理 利用申请权限的回调机制直接在权限申请下来之后调用写入处理
注释很清楚 你们看看代码就好了( ⊙ o ⊙ )!
另外需要注意的一点我们也处理了第一次用户拒绝权限,第二次需要请求时,给用户提示权限作用
//第一请求权限被取消显示的判断,一般可以不写if (ActivityCompat.shouldShowRequestPermissionRationale(SdkActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)){ Log.i("readTosdCard","我们需要这个权限给你提供存储服务"); showAlert();}else { //2、申请权限: 参数二:权限的数组;参数三:请求码 ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_WRITE);}读到这里,这篇"android6.0中如何写入SD卡权限"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
权限
参数
数组
处理
文章
存储
服务
代码
内容
手机
数据
文件
方法
用户
妥当
清楚
成功
上下
上下文
不用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怎么玩lol台湾服务器
魔兽服务器pve是什么意思
中国网络安全股龙头股
市直部门网络安全自查报告
中央企业网络安全攻防大赛
svn安装 服务器搭建
软件开发需要的工时怎么预估
平顶山网络技术厂家报价
驰展网络技术
中老年学习网络技术
网络安全管理作用
上海亨嘉网络技术最新招聘
陕西企业软件开发
埃森哲软件开发的级别
古交软件开发生产公司联系方式
为什么永恒之塔卡在选服务器上进不去
优酷视频不能连接文件服务器
云服务器备份方案
宿迁市网络技术公司
软件开发中心与省分行
铁路网络安全专项自查信息
如何学习上位机软件开发
互联网凝聚中国科技创新
福建省师通八达网络技术
沉迷网络维护网络安全的
网络安全政策文件标准规范
驰展网络技术
软件开发模式属于风险驱动
德邦快递软件开发用什么语言
深圳服务器电源哪种好