android6.0中如何写入SD卡权限
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本文小编为大家详细介绍"android6.0中如何写入SD卡权限",内容详细,步骤清晰,细节处理妥当,希望这篇"android6.0中如何写入SD卡权限"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
法律法规数据库哪个最好用
桂林软件开发厂家价格
关于国家网络安全文件
财务软件开发的区别
哈尔滨佳华网络技术公司
数字媒体网络技术的
10分钟服务器安全设置
网络安全管理制度评估
网络安全 广播稿300字
浦东新区营销软件开发服务保障
贵州数据网络技术分类工程
网络安全法 要求做等保
谷歌学术数据库的特点
无线网说无法联接服务器怎么回事
调研我国通信网络技术产业
网络技术在教育教学的应用
软件开发切界面
分控管理服务器
剑灵游蝶数据库
盛事通数据库指的是什么
农安质量网络技术服务排名靠前
软件开发有没有朝9晚5的
网络安全硕士出来干什么
金仓数据库用的是什么端口
数据库更改空值语句
南京电商软件开发问答知识
逍客屏幕服务器错误
软件开发关键业务是什么
学在宿城公众号网络安全绘画
数据库字段内容合并