先初始化;
注意自定义 的
private final String IMAGE_TYPE = "image/*"private final int IMAGE_CODE = 0
private void setImage() {
Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT) getAlbum.setType(IMAGE_TYPE) startActivityForResult(getAlbum, IMAGE_CODE)}
这里使用Intent获得相册图片数据,并返回原来界面;
这里说明一下
startActivityForResult(getAlbum, IMAGE_CODE)
补充{
startActivityForResult与startActivity的不同之处在于:
1、startActivity( )
仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。
2、startActivityForResult( )
可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。
}
startActivityForResult(getAlbum, IMAGE_CODE)
这里采用startActivityForResult来做跳转,此处的IMAGE_CODE实质是0为一个依据,可以写其他的值,但一定要>=0
然后重写onActivityResult用于接收刚刚得到的数据
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bitmap bm = null ContentResolver resolver = getContentResolver() if (requestCode == IMAGE_CODE) { try {
Uri originalUri = data.getData() bm = MediaStore.Images.Media.getBitmap(resolver, originalUri) imgShow.setImageBitmap(bm) } catch (IOException e) {
e.printStackTrace() }
}
补充{
ContentProvider-----数据提供给第三方应用程序使用时使用
因为在Android系统里面,数据库是私有的。一般情况下外部应用程序是没有权限读取其他应用程序的数据。如果你想公开你自己的数据,你有两个选择:你可以创建你自己的内容提供器(一个ContentProvider子类)或者你可以给已有的提供器添加数据-如果存在一个控制同样类型数据的内容提供器且你拥有写的权限
}
这里是创建一个新的内容提供器,然后在Activity当中通过getContentResolver()可以得到当前应用的 ContentResolver实例
if (requestCode == IMAGE_CODE) {
resultCode为回传的标记这句话是在确认是否回传的是你所需要的;如果是就执行try不然就执行catch (IOException e) {
e.printStackTrace()}先说这里当try语句中出现异常是时,会执行catch中的语句,IOException e也就是实例化Exception类型的对象。e是此对象引用名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace() 。printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。
try {
Uri originalUri = data.getData() bm = MediaStore.Images.Media.getBitmap(resolver, originalUri) imgShow.setImageBitmap(bm)接收数据处理数据并显示照片。
然后进行测试。
另附源码:
MainActivity:
package com.example.administrator.myapplication1import android.graphics.BitmapFactoryimport android.support.v7.app.AppCompatActivityimport android.os.Bundleimport java.io.IOExceptionimport android.net.Uriimport android.os.Bundleimport android.provider.MediaStoreimport android.app.Activityimport android.content.ContentResolverimport android.content.Intentimport android.graphics.Bitmapimport android.view.Viewimport android.view.View.OnClickListenerimport android.widget.Buttonimport android.widget.ImageViewpublic class MainActivity extends AppCompatActivity { private final String IMAGE_TYPE = "image/*" private final int IMAGE_CODE = 0 private Button choose=null private ImageView imgShow @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) init()} private void init() { choose=(Button) findViewById(R.id.button1) imgShow=(ImageView) findViewById(R.id.imgShow) choose.setOnClickListener(listener) } private OnClickListener listener=new OnClickListener(){ @Override public void onClick(View v) {
setImage() }
} private void setImage() {
Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT) getAlbum.setType(IMAGE_TYPE) startActivityForResult(getAlbum, IMAGE_CODE) } protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bitmap bm = null ContentResolver resolver = getContentResolver() if (requestCode == IMAGE_CODE) { try {
Uri originalUri = data.getData() bm = MediaStore.Images.Media.getBitmap(resolver, originalUri) imgShow.setImageBitmap(bm) } catch (IOException e) {
e.printStackTrace() }
}
}
}
layout:activity_main.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="选择照相" android:layout_marginRight="190dp" android:layout_marginTop="8dp" android:paddingBottom="2dp" android:background="#aabbcc" /> <ImageView android:id="@+id/imgShow" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="15dip" /></LinearLayout>
使用系统自带的图片浏览器应用程序Gallery可以打开一张指定的图片,//使用Intent
Intent intent = new Intent(Intent.ACTION_VIEW)
//Uri mUri = Uri.parse("file://" + picFile.getPath())Android3.0以后最好不要通过该方法,存在一些小Bug
intent.setDataAndType(Uri.fromFile(picFile), "image/*")
startActivity(intent)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)