布局里
<ImageView
android:id="@+id/img"
android:layout_width="90dp"
android:layout_height="90dp"
android:src="@drawable/ic_launcher_background"
/>
权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
activity
public class MainActivity extends AppCompatActivity {
private ImageView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = findViewById(R.id.img);
image.setOnClickListener(new View.OnClickListener() {
private AlertDialog.Builder builder;
@Override
public void onClick(View v) {
builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage("上传头像");
builder.setPositiveButton("相册", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Intent.ACTION_PICK 这个对应的就是图库
Intent intent1 = new Intent(Intent.ACTION_PICK);
// 第四步:设置显式MIME数据类型
intent1.setType("image/*");
// 第五步:跳转回
startActivityForResult(intent1, 2);
}
});
builder.setNegativeButton("相机", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
// 指定开启系统相机的Action
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivityForResult(intent, 1);
}
});
builder.show();
}
});
}
创建onactivityresult
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//相册
if (requestCode == 2) {
Uri uri = data.getData();
image.setImageURI(uri);
}
//相机
if (requestCode == 1) {
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");
image.setImageBitmap(bitmap);
}
}