安卓获取手机所有图片代码

package com.example.lbt4;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.example.lbt4.menu.IndexFragment;
import com.example.lbt4.menu.ShoppyFragment;
import com.example.lbt4.menu.UserFragment;
import com.example.lbt4.uito.UtioY;
import com.google.android.material.bottomnavigation.BottomNavigationView;

import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    private static final int PERMISSION_REQUEST_CODE = 100;
    private ArrayList<String> imagePaths;


        int i=0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        findViewById(R.id.button8).setOnClickListener(view -> {
            i++;


            if (checkPermission()) {
                imagePaths = getAllImagesPaths();
                System.out.println("当前长度:"+imagePaths.size());
//            UtioY.loadImageFromUrl(imagePaths.get(1),viewById);


                if (!imagePaths.isEmpty()) {
                    String firstImagePath = imagePaths.get(i); // 这里假设我们加载第一张图片
                    ImageView imageView = findViewById(R.id.imageView5);
                    Bitmap bitmap = BitmapFactory.decodeFile(firstImagePath);
                    imageView.setImageBitmap(bitmap);
                }





                // 在这里使用imagePaths进行任何操作
            } else {
                requestPermission();
            }

        });



        findViewById(R.id.button9).setOnClickListener(view -> {
            i--;


            if (checkPermission()) {
                imagePaths = getAllImagesPaths();
                System.out.println("当前长度:"+imagePaths.size());
//            UtioY.loadImageFromUrl(imagePaths.get(1),viewById);


                if (!imagePaths.isEmpty()) {
                    String firstImagePath = imagePaths.get(i); // 这里假设我们加载第一张图片
                    ImageView imageView = findViewById(R.id.imageView5);
                    Bitmap bitmap = BitmapFactory.decodeFile(firstImagePath);






                    imageView.setImageBitmap(bitmap);
                }





                // 在这里使用imagePaths进行任何操作
            } else {
                requestPermission();
            }

        });


        if (checkPermission()) {
            imagePaths = getAllImagesPaths();
            System.out.println("当前长度:"+imagePaths.size());
//            UtioY.loadImageFromUrl(imagePaths.get(1),viewById);


            if (!imagePaths.isEmpty()) {
                String firstImagePath = imagePaths.get(0); // 这里假设我们加载第一张图片
                ImageView imageView = findViewById(R.id.imageView5);
                Bitmap bitmap = BitmapFactory.decodeFile(firstImagePath);
                imageView.setImageBitmap(bitmap);
            }





            // 在这里使用imagePaths进行任何操作
        } else {
            requestPermission();
        }



        BottomNavigationView bot = findViewById(R.id.bottomNavigationView);
//       getSupportFragmentManager().beginTransaction().replace(R.id.linearLayout,new IndexFragment()).commit();
//       getSupportFragmentManager().beginTransaction().replace(R.id.linearLayout,new ShoppyFragment()).commit();

        bot.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                Fragment f1=null;
                switch (item.getItemId()){
                    case R.id.index:
                        f1=new IndexFragment();
                        break;
                    case R.id.shoppy:
                        f1=new ShoppyFragment();
                        break;
                    case R.id.user:
                        f1=new UserFragment();
                        break;
                }
                getSupportFragmentManager().beginTransaction().replace(R.id.linearLayout,f1).commit();

                return true;
            }
        });

    }



    private boolean checkPermission() {
        return ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
    }

    private void requestPermission() {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == PERMISSION_REQUEST_CODE) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                imagePaths = getAllImagesPaths();
                // 在这里使用imagePaths进行任何操作
            }
        }
    }

    private ArrayList<String> getAllImagesPaths() {
        ArrayList<String> imagePathList = new ArrayList<>();
        Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
        String[] projection = {MediaStore.Images.Media.DATA};

        Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
        if (cursor != null && cursor.moveToFirst()) {
            do {
                String imagePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
                System.out.println("tp"+imagePath);
                imagePathList.add(imagePath);
            } while (cursor.moveToNext());
            cursor.close();
        }
        return imagePathList;
    }


//    void GetImagesPath(){
//        System.out.println("执行1:xxxx");
//
//        paths = new ArrayList();
//        names = new ArrayList();
//
//        Cursor cursor = getContentResolver().query(
//                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
//        System.out.println("获取到的"+cursor);
//        while (cursor.moveToNext()) {
//            System.out.println("执行2:xxxx");
//
//            int columnIndex = cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME);
//            //获取图片的名称
//            String name = cursor.getString(columnIndex);
//            // 获取图片的绝对路径
//            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
//            String path = cursor.getString(column_index);
//
//
//            paths.add(path);
//            names.add(name);
//
//            Log.i("GetImagesPath", "GetImagesPath: name = "+name+"  path = "+ path);
//
//
//        }
//        System.out.println("执行3:xxxx");
//
//        listItems = new ArrayList<>();
//        for (int i = 0; i < paths.size(); i++) {
//            Map<String, Object> map = new HashMap<>();
//            map.put("name", paths.get(i));
//            map.put("desc", names.get(i));
//            listItems.add(map);
//        }
//        System.out.println("执行4:xxxx");
//
//    }


}
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
获取安卓手机相册图片可以通过 Qt 提供的 Qt Android Extras 模块来实现。 以下是一个简单的 QML 代码示例,演示如何使用 Qt Android Extras 模块获取安卓手机相册中的图片: ```qml import QtQuick 2.12 import QtQuick.Controls 2.12 import QtQuick.Layouts 1.3 import Qt.labs.folderlistmodel 2.1 import QtAndroidExtras 1.0 Page { id: page title: "Android Gallery" ColumnLayout { FolderListModel { id: folderModel folder: "file://" + QtAndroidExtras.androidSdk().picturesDirectory() nameFilters: ["*.jpg", "*.png"] showDirs: false showDotAndDotDot: false } ListView { id: listView model: folderModel height: parent.height - button.height delegate: Image { width: listView.width height: width * 0.75 fillMode: Image.PreserveAspectFit source: model.filePath } } Button { id: button text: "Refresh" onClicked: folderModel.refresh() } } Component.onCompleted: { if (Qt.platform.os === "android") { var READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE" if (QtAndroid.checkPermission(READ_EXTERNAL_STORAGE) !== QtAndroid.PermissionResult.Granted) { QtAndroid.requestPermissions([READ_EXTERNAL_STORAGE], function(result) { if (result[READ_EXTERNAL_STORAGE] === QtAndroid.PermissionResult.Granted) { folderModel.refresh() } else { console.log("Permission denied") } }) } else { folderModel.refresh() } } } } ``` 在上面的代码示例中,我们使用了 `FolderListModel` 来获取安卓手机相册中的图片文件。通过设置 `folder` 属性为安卓系统提供的 `Pictures` 目录,我们可以获取到相册中的图片文件。`nameFilters` 属性用于设置需要获取图片文件类型,这里设置为 `*.jpg` 和 `*.png`。在 `ListView` 中,我们将每个图片文件路径设置为 `Image` 的 `source` 属性,以显示图片预览。 需要注意的是,在安卓系统中需要获取读取外部存储器的权限。在 `Component.onCompleted` 中,我们使用 `QtAndroid.checkPermission` 和 `QtAndroid.requestPermissions` 方法来检查和请求权限。如果权限已授予,则刷新 `FolderListModel` 来获取相册中的图片文件。如果权限未授予,则输出错误信息。 如果需要使用 C++ 实现获取安卓手机相册图片的逻辑,可以使用 Qt Android Extras 中的 `QAndroidJniObject` 类和 JNI 接口来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游迹AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值