Android打开相册_安卓10相册无法使用

Android打开相册_安卓10相册无法使用最近在学习安卓的过程中,学到了从相册中选取图片的内容。//java版Activity的代码importandroid.app.Activity;importandroid.content.Intent;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.net.Uri;importandroid.os.Bundle;importandroid.view.View;

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

最近在学习安卓的过程中,学到了从相册中选取图片的内容。
// java版 Activity的代码
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import java.io.FileNotFoundException;
public class MainActivity extends AppCompatActivity {
    int REQUEST_IMAGE_OPEN = 2;
    ImageView imgView = null;  //用于显示图片
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);//打开相册按钮
        imgView = (ImageView) findViewById(R.id.imgView);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //打开相册
                Intent intent = new  Intent(Intent.ACTION_PICK);
               	//指定获取的是图片
                intent.setType("image/*");
                startActivityForResult(intent, REQUEST_IMAGE_OPEN);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //将选择的图片显示
        if(requestCode == REQUEST_IMAGE_OPEN && resultCode == Activity.RESULT_OK &&data !=null){
            Uri uris;
            uris = data.getData();
            Bitmap bitmap = null;
            //Uri转化为Bitmap
            try {
                bitmap = getBitmapFromUri(uris);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            imgView.setImageBitmap(bitmap);
        }
    }
    //Uri转化为Bitmap
    private Bitmap getBitmapFromUri(Uri uri) throws FileNotFoundException {
        Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));
        return bitmap;
    }
}
// kotlin版 Activity的代码
import android.app.Activity
import android.content.Intent
import android.graphics.BitmapFactory
import android.net.Uri
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() { 
   
    val REQUEST_IMAGE_OPEN = 2
    override fun onCreate(savedInstanceState: Bundle?) { 
   
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        button.setOnClickListener { 
   
            val intent = Intent(Intent.ACTION_PICK)
            //指定获取的是图片
            intent.type = "image/*"
            startActivityForResult(intent, REQUEST_IMAGE_OPEN);
        }
    }
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 
   
        super.onActivityResult(requestCode, resultCode, data)
        when(requestCode){ 
   
            REQUEST_IMAGE_OPEN->{ 
   
                if(resultCode == Activity.RESULT_OK &&data !=null){ 
   
                    data.data?.let{ 
    uri->
                        //将图片显示
                        val bitmap = getBitmapFromUri(uri)
                        imgView.setImageBitmap(bitmap)
                    }
                }
            }
        }
    }
    
    private fun getBitmapFromUri(uri: Uri) = contentResolver
            .openFileDescriptor(uri,"r")?.use { 
   
                BitmapFactory.decodeFileDescriptor(it.fileDescriptor)
            }
}

官方文档用的是Intent.ACTION_OPEN_DOCUMENT 或者Intent.ACTION_GET_CONTENT请添加图片描述

这里用了Intent.ACTION_PICK实现获取图片
请添加图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190522.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号