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实现获取图片
请添加图片描述

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 人脸表情识别系统介绍——上篇(python实现,含UI界面及完整代码)

    人脸表情识别系统介绍——上篇(python实现,含UI界面及完整代码)摘要:这篇博文介绍基于深度卷积神经网络实现的人脸表情识别系统,系统程序由Keras,OpenCv,PyQt5的库实现,训练测试集采用fer2013表情库。如图系统可通过摄像头获取实时画面并识别其中的人脸表情,也可以通过读取图片识别,本文提供完整的程序文件并详细介绍其实现过程。博文要点如下:表情识别数据集、搭建表情识别的模型、数据增强的批量训练、系统UI界面的实现。点击跳转至博文涉及的全部文件下载页。

  • 2021最新java详细学习路线及路线图(超详细)「建议收藏」

    2021最新java详细学习路线及路线图(超详细)「建议收藏」本文将告诉你学习Java的一些步骤,学习过程中可能遇到的问题,及学习路线。希望能够对你的学习有所帮助。文末给大家准备了惊喜,希望大家都能够坚持看完哦~一、Java基础二、Java学习七大阶段[阶段1、JavaSE基础][阶段2、WEB前端][阶段3、数据库][阶段4、JavaWeb][阶段5、JavaWeb项目][阶段…

  • 网络传真机——让传真,超越纸的限制[通俗易懂]

    网络传真机——让传真,超越纸的限制[通俗易懂]网络传真机,离你不再遥远!网络传真-真实号码版,超低价来袭,江苏电信倾力投资,立足江苏,面向全国!13万靓号任君选择。 (1)传真发送功能 点击写传真可进行单个号码发送传真也可多个号码…

  • smtp服务器配置_smtp 服务器

    smtp服务器配置_smtp 服务器邮件首页SMTP地址SMTP登录用户名(例)是否验证端口SSL      mail.sohu.com smtp.sohu.com maoshen2010@sohu.com 是250mail.yeah.net smtp.yeah.net maoshen2010@yeah.net

  • 适配器简单介绍

    适配器简单介绍适配器的作用如下图:1、这种通信适配器上面装有处理器和存储器(RAM和ROM),硬件地址固化在适配器的ROM中,软件地址(IP地址)在计算机的存储器中。2、适配器在接收和发送各种帧时,不使用计算机的CPU,此时计算机的CPU可以处理其他任务。3、当适配器收到有差错的帧时,就把帧直接丢弃不通知计算机。4、当计算机手收到正确的帧时,就使用中断通知计算机,并交付协议栈中的网络层。5、当计算机发送IP数据…

  • WinForm和WPF的区别「建议收藏」

    一、控件的差异作为Windows桌面UI开发的两大.net开发库,WinForm和WPF同时存在着。之所以功能如此重合的两个库同时存在,是因为两者的底层差异非常大,WinForm底层依赖于传统的Win32API,特别是User32.dll;而WPF则底层依赖于Direct3D。而我们知道User32和Direct3D两者是平行存在,彼此独立的。WPF之前几乎所有的WindowsUI开发都依赖于User32,当然游戏除外。随着Direct3D的日趋成熟和显卡的普通性能提升,微软力图改变这种状况,所以开发

发表回复

您的电子邮箱地址不会被公开。

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