(1)权限要使能
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.lenovo.chenopenpicandshow"> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" /> <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="com.qti.permission.PROFILER" /> <application
(2)布局一个按钮,一个imageView
(3)切记,动态授权,和一起安卓编程不一样,因为安卓6(23)以后就是这样了,白白调试了大半天的时间啊!
代码如下:
import android.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.net.Uri; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.util.Log; import android.view.Menu; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.provider.MediaStore; import android.widget.Toast; import android.Manifest; import android.support.v4.content.ContextCompat; import android.content.pm.PackageManager; import android.support.v4.app.ActivityCompat; public class MainActivity extends AppCompatActivity { private ImageView imageView = null; private Button bt1 = null;//图1 private Bitmap bm = null; private Toast toast=null; private int REQUEST_CODE_SELECT_PIC = 120; //动态获得权限 // private static final int REQUEST_EXTERNAL_STORAGE = 1; // private static String[] PERMISSIONS_STORAGE = { // Manifest.permission.READ_EXTERNAL_STORAGE, // Manifest.permission.WRITE_EXTERNAL_STORAGE}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.imageView); bt1 = (Button) findViewById(R.id.button); bt1.setOnClickListener(listener); } private View.OnClickListener listener = new View.OnClickListener() { public void onClick(View v) { if (v == bt1) { // currentImgId=(currentImgId-1+imgId.length)%imgId.length; // imageView.setImageResource(imgId[currentImgId]); // imageView.setImageResource( R.drawable.tu2); checkPermission(); // bm = BitmapFactory.decodeFile("/storage/emulated/0/Tencent/QQfile_recv/tu1.jpg"); // imageView.setImageBitmap(bm); // int i=0; // i=1; selectPicture(); } } }; public void checkPermission() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED ) { toast("have request this permission").show(); } else { requestPermission(); } } public Toast toast(String text) { if (toast == null) { toast = Toast.makeText(this, text, Toast.LENGTH_SHORT); } else { toast.setText(text); } return toast; } public void requestPermission() { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100); } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch(requestCode){ case 100: toast("request this permission completion"+grantResults[0]+"\t"+grantResults[1]).show(); break; } } private void selectPicture() { Intent intent = new Intent(); intent.setAction(Intent.ACTION_PICK); intent.setType("image/*"); // 这个函数会自动调用下面的函数 startActivityForResult(intent, REQUEST_CODE_SELECT_PIC); } private static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int halfHeight = height / 2; final int halfWidth = width / 2; while ((halfHeight / inSampleSize) > reqHeight && (halfWidth / inSampleSize) > reqWidth) { inSampleSize *= 2; } } return inSampleSize; } public static Bitmap getSmallBitmap(String filePath, int reqWidth, int reqHeight) { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(filePath, options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; //避免出现内存溢出的情况,进行相应的属性设置。 options.inPreferredConfig = Bitmap.Config.RGB_565; options.inDither = true; return BitmapFactory.decodeFile(filePath, options); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_SELECT_PIC) { // 获取选择的图片 Uri selectedImage = data.getData(); int width = 0; int height = 0; // imageView.setImageResource( R.drawable.tu2); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(selectedImage, null, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); // 获取到图片的路径 String selectedImagePath = cursor.getString(columnIndex); /* final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = false; options.inPreferredConfig = Bitmap.Config.RGB_565; options.inDither = true; options.inSampleSize = 2; */ // bm = BitmapFactory.decodeFile(selectedImagePath, options); bm = BitmapFactory.decodeFile(selectedImagePath); imageView.setImageBitmap(bm); // Log.i("zhang selectedImagePath", selectedImagePath); // 调取底层处理 //DealImage(selectedImagePath); // 解码该路径的图片,得到bitmap 图片 // bm = getSmallBitmap(selectedImagePath,100,100); /* if (bm != null) { new AlertDialog.Builder(this) .setTitle("标题") .setMessage(selectedImagePath) .setPositiveButton("确定", null).show(); // imageView.setImageBitmap(bm); }*/ /* if (bm == null) { new AlertDialog.Builder(this) .setTitle("标题") .setMessage("读取图片为空") .setPositiveButton("确定", null).show(); } */ // width = bm.getWidth(); // imageView.setImageResource( R.drawable.tu2); // imageView.setImageBitmap(bm); // bm = BitmapFactory.decodeFile(selectedImagePath); // width = bm.getWidth(); // height = bm.getHeight(); if (selectedImage != null) { //将图片显示到ImageView中 // imageView.setImageBitmap(bm); } } super.onActivityResult(requestCode, resultCode, data); } }