从相册选择照片的逻辑,代码如下所示:
public class MainActivity extends Activity {
private Button chooseFromAlbum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
……
chooseFromAlbum = (Button) findViewById(R.id.choose_from_album);
chooseFromAlbum.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 创建File 对象,用于存储选择的照片
File outputImage = new File(Environment.getExternalStorageDirectory(), "output_image.jpg");
try {
if (outputImage.exists()) {
outputImage.delete();
}
outputImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
imageUri = Uri.fromFile(outputImage);
Intent intent = new Intent("android.intent.action.GET_CONTENT");
intent.setType("image/*");
intent.putExtra("crop", true);
intent.putExtra("scale", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, CROP_PHOTO);
}
});
}
}
在 ChooseFromAlbum按钮的点击事件里我们同样创建了一个 File 对象,用于存储从相册中选择的图片。然后构建出一个 Intent 对象,并将它的 action 指定android.intent.action.GET_CONTENT。接着给这个 Intent 对象设置一些必要的参数,包括是否允许缩放和裁剪、图片的输出位置等。最后调用 startActivityForResult()方法,就可以打开相册程序选择照片了。