大家的APP中经常会有从手机相机、图库获取图片,这里封装了方法可以方便大家,解决了Android7.0资源uri的获取方式,兼容SDK19以上的机子,有权限请求整合,欢迎大家下架使用,评论指导也可以。
程序运行结果:
程序应用类代码:
package jason.com.carmerphoto;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import static jason.com.carmerphoto.GetPicUtil.REQUEST_PERMISSION_CAMERA;
import static jason.com.carmerphoto.GetPicUtil.REQUEST_PERMISSION_WRITE;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ImageView img_album;
private Button btn_dialog;
private TextView tv_desd;
String imagePath = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
this.img_album = (ImageView) findViewById(R.id.img_album);
this.btn_dialog = (Button) findViewById(R.id.btn_pic);
this.tv_desd = (TextView) findViewById(R.id.tv_desc);
this.btn_dialog.setOnClickListener(this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
this.imagePath = GetPicUtil.handlePicResult(this, data, requestCode, resultCode, img_album);
Log.v("TAG", "get_picpath=" + imagePath);
}
/**
* 不处理权限的回调也可以,就是第一次获取权限,要再次点击控件触发
*
* @param requestCode
* @param permissions
* @param grantResults
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST_PERMISSION_CAMERA:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
GetPicUtil.take_photo(this);
} else {
Toast.makeText(this, "你需要权限许可!", Toast.LENGTH_LONG).show();
}
break;
case REQUEST_PERMISSION_WRITE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
GetPicUtil.openAlbum(this);
} else {
Toast.makeText(this, "你需要权限许可!", Toast.LENGTH_LONG).show();
}
break;
default:
break;
}
}
@Override
public void onClick(View v) {
tv_desd.setText("sdk_" + Build.VERSION.SDK_INT);
GetPicUtil.showPicDialog(this);
}
}
//大家的Androidstudio版本可能都不同,这里下载解压后不要着急打开项目,打开项目文件夹修改几个文件可以使用你本地的gradle版本,打开你原来运行过的项目替换以下代码:
1.打开项目的build.gradle文件 ,修改替换成你原有的项目代码语句,保存文件。
//classpath ‘com.android.tools.build:gradle:2.2.2’
2.打开项目gradle/warpper/gradle-wrapper.properties文件,替换保存:
//distributionUrl=https://services.gradle.org/distributions/gradle-2.14.1-all.zip
3.打开项目app/build.gradle,修改以下工具版本,打开你原来运行过的项目替换以下代码:
//compileSdkVersion 25
//buildToolsVersion “25.0.3”
//compile ‘com.android.support:appcompat-v7:25.3.1’
//compile ‘com.android.support:design:25.3.1’
本文代码Demo下载
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)