代码复制可用,开发工具为:Android Studio
AndroidManifest.xml 中添加权限
跳转相册和相机
//跳转相册
private void toPicture() {
Intent intent = new Intent(Intent.ACTION_PICK); //跳转到 ACTION_IMAGE_CAPTURE
intent.setType("image/*");
startActivityForResult(intent,100);
L.e("跳转相册成功");
}
//跳转相机
private void toCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //跳转到 ACTION_IMAGE_CAPTURE
//判断内存卡是否可用,可用的话就进行存储
//putExtra:取值,Uri.fromFile:传一个拍照所得到的文件,fileImg.jpg:文件名
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(),"fileImg.jpg")));
startActivityForResult(intent,101); // 101: 相机的返回码参数(随便一个值就行,只要不冲突就好)
L.e("跳转相机成功");
}
在 BaseActivity 中添加以下代码
//跳转相机动态权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
}
写的权限处理
private static String[] PERMISSIONS_STORAGE = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE };
public boolean verifyStoragePermissions(Activity activity) {
// 检查是否有写权限
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
// 我们没有权限,所以提示用户
ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, 1);
return false;
}else{
return true;
}
}
获取相机返回的图片并显示
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
//判断返回码不等于0
if (requestCode != RESULT_CANCELED){ //RESULT_CANCELED = 0(也可以直接写“if (requestCode != 0 )”)
//读取返回码
switch (requestCode){
case 100: //相册返回的数据(相册的返回码)
L.e("相册");
Uri uri01 = data.getData();
try {
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri01));
ImageView01.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
break;
case 101: //相机返回的数据(相机的返回码)
L.e("相机");
try {
tempFile = new File(Environment.getExternalStorageDirectory(),"fileImg.jpg"); //相机取图片数据文件
Uri uri02 = Uri.fromFile(tempFile); //图片文件
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri02));
ImageView01.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}
}
【BaseActivity .java】
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//跳转相机动态权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
}
}
}
【MainActivity .java】
package com.example.erp_lxkun_jak.testcamera;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
public class MainActivity extends BaseActivity implements View.OnClickListener {
private Button Button01;
private Button Button02;
private ImageView ImageView01;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
Button01 = findViewById(R.id.Button01);
Button02 = findViewById(R.id.Button02);
ImageView01 = findViewById(R.id.ImageView);
Button01.setOnClickListener(this);
Button02.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.Button01:
toPicture();
Toast.makeText(MainActivity.this,"Button 01",Toast.LENGTH_SHORT).show();
break;
case R.id.Button02:
if(verifyStoragePermissions(MainActivity.this)){
toCamera();
}else{
Toast.makeText(MainActivity.this,"没有权限",Toast.LENGTH_SHORT).show();
}
break;
}
}
private File tempFile = null; //新建一个 File 文件(用于相机拿数据)
//获取 相机 或者 图库 返回的图片
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
//判断返回码不等于0
if (requestCode != RESULT_CANCELED){ //RESULT_CANCELED = 0(也可以直接写“if (requestCode != 0 )”)
//读取返回码
switch (requestCode){
case 100: //相册返回的数据(相册的返回码)
L.e("相册");
Uri uri01 = data.getData();
try {
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri01));
ImageView01.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
break;
case 101: //相机返回的数据(相机的返回码)
L.e("相机");
try {
tempFile = new File(Environment.getExternalStorageDirectory(),"fileImg.jpg"); //相机取图片数据文件
Uri uri02 = Uri.fromFile(tempFile); //图片文件
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri02));
ImageView01.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}
}
//跳转相册
private void toPicture() {
Intent intent = new Intent(Intent.ACTION_PICK); //跳转到 ACTION_IMAGE_CAPTURE
intent.setType("image/*");
startActivityForResult(intent,100);
L.e("跳转相册成功");
}
//跳转相机
private void toCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //跳转到 ACTION_IMAGE_CAPTURE
//判断内存卡是否可用,可用的话就进行存储
//putExtra:取值,Uri.fromFile:传一个拍照所得到的文件,fileImg.jpg:文件名
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(),"fileImg.jpg")));
startActivityForResult(intent,101); // 101: 相机的返回码参数(随便一个值就行,只要不冲突就好)
L.e("跳转相机成功");
}
private static String[] PERMISSIONS_STORAGE = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE };
public boolean verifyStoragePermissions(Activity activity) {
// 检查是否有写权限
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
// 我们没有权限,所以提示用户
ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, 1);
return false;
}else{
return true;
}
}
}
【布局文件:activity_main.xml】
App下载: https://aifabu.com/IVrU
.
源码下载:https://download.csdn.net/download/erp_lxkun_jak/11261556
【注意:使用开发工具是 Android Studio 哦!】
.
.
感谢你的查阅,希望可以帮到你,祝你学习愉快!
.