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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • werfault.exe出现的原因与解决办法以及werfault.exe 该内存不能为written如何解决?

    werfault.exe出现的原因与解决办法以及werfault.exe 该内存不能为written如何解决?Windows用户总会抱怨WerFault.exe应用程序的保存,本文给您讲解为何会出现这种进行问题以及如何修复?一、WerFault.exe是什么?WerFault.exe是Windows操作系统中的一个可执行文件程序。文件的扩展名是.exe的表示是可执行,因此用户需要运行那些信任的可执行文件,因为可执行文件存在潜在的风险,它们可以改变您计算机的设置并伤害您的计算机。WerFault…

    2022年6月30日
    69
  • qmap的书写格式linux,QMap 键值存储「建议收藏」

    qmap的书写格式linux,QMap 键值存储「建议收藏」Qt中的QMap介绍与使用,在坛子里逛了一圈,发现在使用QMap中,出现过很多的问题,Map是一个很有用的数据结构。它以“键-值”的形式保存数据。在使用的时候,通过提供字符标示(键)即可得到想要的数据。这个“数据”即可以是一个字符串,也可以是任意对象,当然也包括自己定义的类对象。说明:map是以值传递的形式保存数据的。1.基本应用下面以“键-值”都是QString的例子说明QMap的基本使用方法…

    2022年5月7日
    74
  • 10款Java小游戏(详解+源码)

    10款Java小游戏(详解+源码)开源Java小游戏前言下面就给大家介绍十几个开源的Java小游戏,供大家学习交流。资源都下载好共享到我的交流群了,需要的在群内自取862461829不收取任何资源费,毕竟开源才是我们的宗旨。【群里还含有:Java80g学习资料包+Java学习书籍+Java项目实战源码+安装软件等】各类资源都有哦~1.数字彩虹雨这是我比较喜欢的一个小应用,虽然代码比较简单但是喜欢那种简单的美。下面是运行截图,就是我们在黑客帝国里面见到的那种数字雨,运行时是全屏的。下面说说下载链接里面的东西.

    2022年7月9日
    17
  • pagehelper,pageinfo用法[通俗易懂]

    pagehelper,pageinfo用法[通俗易懂]pagehelper,从pageinfo中取到的total不正确的处理。最近在使用pagehelper时遇到一些问题。2个类似的查询都用的PageHelper.startPage进行分页,A方法pageinfo中取出来的total,pages是正确的,B方法取出来的确不对,pages始终等于1,total始终等于pageSize。很奇怪!仔细对照了两个方法之后找到了原因。方法A:这是se…

    2022年10月30日
    0
  • AndroidMainifest标签说明2——<activity>

    AndroidMainifest标签说明2——<activity>

    2022年1月10日
    39
  • mysql 多行转一列_mysql行转列(多行转一列)

    mysql 多行转一列_mysql行转列(多行转一列)场景比如说一个订单对应多条数据,当状态(status)=1的时候,数量(num)=25,当状态(status)=2的时候,数量(num)=45,现在想用一条sql记录下不同状态对应的数量为多少,如下图所示:期待结果->sql语句示例SELECTtrades_id,MAX(CASEWHENapply_status=1THENpay_changeELSE0END)’nu…

    2022年5月24日
    41

发表回复

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

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