知识问答
android打开相册_Android
2025-09-07 20:42:01
来源:互联网转载
要在Android中打开相册,可以使用Intent
来实现,以下是详细步骤:
1、创建一个新的Android项目,或者在已有项目中添加一个新的Activity。
2、在需要打开相册的地方,创建一个Intent
对象,设置其动作为ACTION_GET_CONTENT
,并指定数据的MIME类型为image/*
。
3、使用startActivityForResult()
方法启动Intent
,以便在用户选择图片后获取结果。
4、重写onActivityResult()
方法,以处理用户选择的图片。
下面是具体的代码实现:
MainActivity.java
import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import androidx.core.content.ContextCompat;import android.Manifest;import android.content.Intent;import android.content.pm.PackageManager;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private static final int REQUEST_CODE_GALLERY = 1001; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = findViewById(R.id.imageView); Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_CODE_GALLERY); } else { openGallery(); } } }); } private void openGallery() { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intent, REQUEST_CODE_GALLERY); } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == REQUEST_CODE_GALLERY) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { openGallery(); } else { Toast.makeText(this, "权限被拒绝", Toast.LENGTH_SHORT).show(); } } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK && requestCode == REQUEST_CODE_GALLERY) { if (data != null) { Uri uri = data.getData(); Cursor cursor = getContentResolver().query(uri, new String[]{MediaStore.Images.Media.DATA}, null, null, null); if (cursor != null && cursor.moveToFirst()) { String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); cursor.close(); imageView.setImageBitmap(BitmapFactory.decodeFile(path)); } } } }}
activity_main.xml
<?xml version="1.0" encoding="utf8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/resauto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="打开相册" /> <ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" /></LinearLayout>
这样,当用户点击“打开相册”按钮时,应用会打开系统相册,用户可以选择一个图片,然后该图片会显示在ImageView
中。
最新文章
- Golang面试题挑战,如何用Go语言解决某公司的开发难题?
- 启动msdtc服务
- 如何正确配置DataSourceConfig类以实现MSSQL数据库向MySQL的迁移?
- 蜂鸣器的工作原理是什么
- int多少字节
- 如何通过MapReduce抽象类实现数据统计?
- win7怎么安装无线网卡驱动-win7安装无线网卡驱动教程
- 安卓软件开发步骤
- MyBatis拦截器如何实现高效的分页功能?
- 怎么拍快手长视频
- 网易cc语音客服电话是多少
- 安装光伏发电的利与弊有哪些
- 如何编写MySQL数据库的导出代码?
- wechat是什么意思
- 如何部署一个自己的云点播服务器?
- 如何有效利用MySQL数据库操作手册提升数据库管理技能?
- 工信部域名备案查询官网
- 如何使用MySQL命令创建数据库?
- q9650cpu怎么样
- i54200m是高端CPU吗,cpu i5 4200m