第八单元总结

Android6.0权限和SharedPreferences存储

1:

Android6.0权限

判断SDK的版本:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)

Build.VERSION.SDK_INT :SDK版本

Build.VERSION_CODES.M:常量23,即android 6.0 对应得API版本号

如:int permission = ContextCompat.checkSelfPermission(MainActivity.this,

Manifest.permission.WRITE_EXTERNAL_STORAGE);

permission==PackageManager.PERMISSION_GRANTED:表示已经授权

permission==PackageManager.PERMISSION_DENIED:表示没有权限

Intent intent = new Intent(activity, PermissionsActivity.class);

intent.putExtra(“参数名”, “参数值”);

startActivityForResult(activity, intent, requestCode, null);

参数名:自定义

参数值:Manifest.permission.WRITE_EXTERNAL_STORAGE

public void onRequestPermissionsResult(int requestCode,String[] permissions, int[] grantResults) {

setResult(0);//授权成功

setResult(-1);//授权拒绝

}

SharedPreferences存储

定义:是一个采用Key/value的方式存储轻量级数据的接口。

1:SharedPreferences sharedPreferences = getSharedPreferences("test", Context.MODE_PRIVATE);

第一个参数:存储的文件名

第二个参数:操作权限


2:获得editor对象

Editor editor = sharedPreferences.edit();


3:存数据并提交

editor.putString("name", "小明");

editor.putInt("age", 20);

editor.commit();


1:SharedPreferences sharedPreferences = getSharedPreferences("test", Context.MODE_PRIVATE);

sharedPreferences .getString(“name”,”defaultValue”);

sharedPreferences .getInt(“age”,18);

name:存储的key

defaultValue:默认值

editor.remove("name");

editor.clear();

remove():移除key为name的数据

clear():清除所有数据

3:

外部存储-SD卡

SD卡介绍:

一般手机文件管理 根路径

/storage/emulated/0/

或者

/mnt/shell/emulated/0


<uses-permission

android:name="android.permission.READ_EXTERNAL_STORAGE">

</uses-permission>

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

</uses-permission>

public class MainActivity extends AppCompatActivity {

private Button login;

private static final String TAG = "MainActivity";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

String externalStorageState = Environment.getExternalStorageState();

Log.i(TAG, "onCreate: "+externalStorageState);

File externalStorageDirectory = Environment.getExternalStorageDirectory();

Log.i(TAG, "onCreate: "+externalStorageDirectory.toString());

File externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

Log.i(TAG, "onCreate: "+externalStoragePublicDirectory);

login = findViewById(R.id.login);

login.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//运行时权限

requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE},100);

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

//获取SD卡根路径:

File file = Environment.getExternalStorageDirectory();

FileOutputStream out = null;

try {

//创建输出流

out = new FileOutputStream(new File(file, "json.txt"));

out.write("呵呵呵俺哥哥".getBytes());

} catch (FileNotFoundException e) {

e.printStackTrace();

} } finally {

if (out != null) {

try {

out.close();

} catch (IOException e) {

e.printStackTrace(); } } } } } });}

4:

外部存储-图片存储功能

//方法3:从SD卡中读取一张图片

public static Bitmap read_bitmap(String filename) {//filename图片名字

Bitmap bitmap=null;

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

File file=Environment.getExternalStorageDirectory();

File file1 = new File(file, filename);

//BitmapFactory可以直接根据SD卡图片路径转成一个bitmap对象

bitmap= BitmapFactory.decodeFile(file1.getAbsolutePath());

}

return bitmap;

}

//方法4:网络下载一张图片存储到SD卡中

public static void write_bitmap(String url) {//网址

new MyTask().execute(url);

}

static class MyTask extends AsyncTask<String,String,String> {

@Override

protected String doInBackground(String... strings) {

FileOutputStream out=null;

InputStream inputStream=null;//网络连接的输入流

HttpURLConnection connection=null;//向SD卡写的输出流

try {

URL url= new URL(strings[0]);

connection= (HttpURLConnection) url.openConnection();

connection.setConnectTimeout(5*1000);

connection.setReadTimeout(5*1000);

if (connection.getResponseCode()==200){

inputStream = connection.getInputStream();

//TODO 获取SD卡的路径

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))

{

//是否挂载

File file = Environment.getExternalStorageDirectory();

out = new FileOutputStream(new File(file,"xiaoyueyue.jpg"));

byte[] bytes=new byte[1024];

int len=0;

while((len=inputStream.read(bytes))!=-1){

out.write(bytes,0,len);

}

}

}

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally {

//关闭流

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值