android 6.0 中怎么寫入SD卡權(quán)限,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元玉泉做網(wǎng)站,已為上家服務(wù),為玉泉各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108package 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;//申請權(quán)限的請求碼 @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("權(quán)限說明"). setMessage("我們需要這個(gè)權(quán)限給你提供存儲服務(wù)"). setIcon(R.drawable.ic_launcher). setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub //2、申請權(quán)限: 參數(shù)二:權(quán)限的數(shù)組;參數(shù)三:請求碼 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以上的手機(jī) 不是就不用 if(Build.VERSION.SDK_INT>=23){ //判斷是否有這個(gè)權(quán)限 if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){ //第一請求權(quán)限被取消顯示的判斷,一般可以不寫 if (ActivityCompat.shouldShowRequestPermissionRationale(SdkActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)){ Log.i("readTosdCard","我們需要這個(gè)權(quán)限給你提供存儲服務(wù)"); showAlert(); }else { //2、申請權(quán)限: 參數(shù)二:權(quán)限的數(shù)組;參數(shù)三:請求碼 ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_WRITE); } }else { writeToSdCard(); } } else{ writeToSdCard(); } break; } } //寫數(shù)據(jù) 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文件 參數(shù) 前面 是目錄 后面是文件 try { FileOutputStream fileOutputStream=new FileOutputStream(path); fileOutputStream.write("hello".getBytes()); } catch (Exception e) { e.printStackTrace(); } } } //讀數(shù)據(jù) 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(); } //判斷授權(quán)的方法 授權(quán)成功直接調(diào)用寫入方法 這是監(jiān)聽的回調(diào) //參數(shù) 上下文 授權(quán)結(jié)果的數(shù)組 申請授權(quán)的數(shù)組 @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(); } } }
其實(shí)就是判斷是不是6.0的手機(jī)再進(jìn)行申請權(quán)限的處理 利用申請權(quán)限的回調(diào)機(jī)制直接在權(quán)限申請下來之后調(diào)用寫入處理
注釋很清楚 你們看看代碼就好了( ⊙ o ⊙ )!
另外需要注意的一點(diǎn)我們也處理了第一次用戶拒絕權(quán)限,第二次需要請求時(shí),給用戶提示權(quán)限作用
//第一請求權(quán)限被取消顯示的判斷,一般可以不寫 if (ActivityCompat.shouldShowRequestPermissionRationale(SdkActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)){ Log.i("readTosdCard","我們需要這個(gè)權(quán)限給你提供存儲服務(wù)"); showAlert(); }else { //2、申請權(quán)限: 參數(shù)二:權(quán)限的數(shù)組;參數(shù)三:請求碼 ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_WRITE); }
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
分享題目:android6.0中怎么寫入SD卡權(quán)限-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://muchs.cn/article32/heopc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、外貿(mào)網(wǎng)站建設(shè)、定制網(wǎng)站、做網(wǎng)站、面包屑導(dǎo)航、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容