android6.0中如何写入SD卡权限
发表于:2024-12-01 作者:千家信息网编辑
千家信息网最后更新 2024年12月01日,本文小编为大家详细介绍"android6.0中如何写入SD卡权限",内容详细,步骤清晰,细节处理妥当,希望这篇"android6.0中如何写入SD卡权限"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢
千家信息网最后更新 2024年12月01日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安全错误
数据库的锁怎样保障安全
随着网络技术负载均衡需求
湖南服务器硬盘参数
mysql数据库教材
分子生物学课件软件开发
上海淇璇互联网科技有限公司
数据库笛卡尔积图
数据库整体复习ppt
云计算虚拟服务器安全设计
末世鼠疫服务器错误登录超时
无锡电商软件开发诚信服务
数据库中如何插入脚本
宝德服务器管理口怎么进去
社区服务器品牌
全国网民网络安全
东南大学的网络安全学院考研科目
sql命令行创建数据库
tbase数据库单机安装
论软件开发从业者的伦理道德
服务器管理器灾难性故障
工业网络技术需求量
电子驾照申请服务器异常
金蝶连不上服务器
明秀园服务器怎么样
关于加强网络安全指导意见
服务器跳板管理
上海网络安全教育
数据库库表结构查询
double 数据库
数据库维护需要什么书
电脑升级无法连接服务器