相关描述

已经完成发送彩信功能之后,就来继续向前走一步,来到MediaStore查询图片界面啦!

具体步骤实现

1、简简单单地一个界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".check"
android:orientation="vertical"> <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击下方图片发送:"> </TextView> <GridLayout
android:id="@+id/gl"
android:layout_width="match_parent"
android:layout_height="wrap_content"> </GridLayout> </LinearLayout>

2、后台代码

package com.example.myapplication;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity; import android.Manifest;
import android.annotation.SuppressLint;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.ImageDecoder;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.GridLayout;
import android.widget.ImageView; import java.util.ArrayList; public class check extends AppCompatActivity { private static final String[] PERMISSIONS=new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE
}; private static final int REQUEST_ALL_CODES=1; private ArrayList<ImageInfo> list=new ArrayList<>(); private GridLayout gl; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_check); //手动扫描图片入库
MediaScannerConnection.scanFile(this,new String[]{
Environment.getExternalStorageState().toString()
},null,null); // gl=findViewById(R.id.gl);
//
//
// //加载图片列表
// loadImageList();
//
// //显示图像网络
// showImageGrid();
} @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults); if(requestCode==REQUEST_ALL_CODES){
//加载图片列表
loadImageList(); //显示图像网络
showImageGrid();
}
} //显示图像网络
private void showImageGrid() {
//清空
gl.removeAllViews(); for(ImageInfo info:list){
ImageView view=new ImageView(this); Bitmap bitMap=BitmapFactory.decodeFile(info.path);
view.setImageBitmap(bitMap); //设置图片的缩放类型
view.setScaleType(ImageView.ScaleType.FIT_CENTER); //设置点击事件
view.setOnClickListener(v->{ });
//将图片添加到网络布局
gl.addView(view); } } //加载图片列表
@SuppressLint("Range")
private void loadImageList() {
//MediaStore
String[] columns=new String[]{
MediaStore.Images.Media._ID,//图片编号
MediaStore.Images.Media.TITLE,//图片标题
MediaStore.Images.Media.SIZE,//图片大小
MediaStore.Images.Media.DATA//图片路径
}; Cursor cursor=getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
columns,
"_size < 307200",
null,
"_size DESC"
); int count=0;
if(cursor!=null){
while (cursor.moveToNext() && count < 6) {
ImageInfo info=new ImageInfo();
info.id=cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media._ID));
info.name=cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.TITLE));
info.size=cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media.SIZE));
info.path=cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); count++;
list.add(info);
Log.d("ning","images:"+info.toString()); }
} }
}

3、实体类代码

package com.example.myapplication;

public class ImageInfo {
@Override
public String toString() {
return "ImageInfo{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", size='" + size + '\'' +
", path='" + path + '\'' +
'}';
} public long id;
public String name;
public long size;
public String path;
}

4、特殊情况说明

扫描完成再去请求权限:

这里就直接用null代替了那个callback

我们需要保证在出现图片的时候,图片能够进入数据库,但是他需要我们手动调节,不,手动扫描入库:

Android笔记--通过MediaStore查询图片的更多相关文章

  1. Android学习笔记进阶之在图片上涂鸦(能清屏)

    Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ...

  2. Android笔记之使用Glide加载网络图片、下载图片

    Glide简介 不想说太多,真的很方便:P)可以节省我不少时间 GitHub地址:https://github.com/bumptech/glide 加载网络图片到ImageView Glide.wi ...

  3. Android笔记(二十八) Android中图片之简单图片使用

    用户界面很大程度上决定了APP是否被用户接收,为了提供友好的界面,就需要在应用中使用图片了,Android提供了丰富的图片处理功能. 简单使用图片 使用Drawable对象 为Android应用增加了 ...

  4. Android笔记——Android中数据的存储方式(二)

    我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...

  5. Android相机、相册获取图片显示并保存到SD卡

    Android相机.相册获取图片显示并保存到SD卡 [复制链接]   电梯直达 楼主    发表于 2013-3-13 19:51:43 | 只看该作者 |只看大图  本帖最后由 happy小妖同学 ...

  6. (转)Android学习-使用Async-Http实现图片压缩并上传功能

    (转)Android学习-使用Async-Http实现图片压缩并上传功能 文章转载自:作者:RyaneLee链接:http://www.jianshu.com/p/940fc7ba39e1 让我头疼一 ...

  7. Android 笔记之 Android 系统架构

    Android笔记之Android系统架构 h2{ color: #4abcde; } a{ color: blue; text-decoration: none; } a:hover{ color: ...

  8. Android 使用GridView+仿微信图片上传功能(附源代码)

    由于工作要求最近在使用GridView完成图片的批量上传功能,我的例子当中包含仿微信图片上传.拍照.本地选择.相片裁剪等功能,如果有需要的朋友可以看一下,希望我的实际经验能对您有所帮助. 直接上图,下 ...

  9. Android笔记--自定义控件仿遥控器的圆形上下左右OK圆盘按钮

    原文:Android笔记--自定义控件仿遥控器的圆形上下左右OK圆盘按钮 上面就是几张预览图!代码在最底下 主要就两个步骤,画图.监听点击 1.整个控件基本上是一步步画出来的,重写onDraw方法开始 ...

  10. Qt for Android (三) 打开Android相册并选一个图片进行显示

    Qt for Android (三) 这两天弄了一下android相册的相关功能.还是花了挺长时间的,这里总结一下,避免以后再踩坑.同时也在这篇文章里面补齐一些android开发的基础支持 打开And ...

随机推荐

  1. element的el-table合计显示不出来

    在updated中写入 this.$nextTick(() => { this.$refs["printStatisticsTableData"].doLayout(); } ...

  2. 问题:PHP扩展功能,去掉分号';'没有用,是怎么回事?(已解决)

    1. 环境:win10的操作系统,IIS的服务器. 2. 问题描述:PHP要开启访问MYSQL的模块mysqli,我打开配置文件,去掉相关扩展模块前面的分号';',然后重启服务器,但是无效 ~~ 3. ...

  3. luogu 4886

    点分治好题 统计距离正常点分治统计即可,我们只需考虑何时达到最优 有两种情况: 第一:代价最大的询问两个端点在不同的两个子树中 因为这种情况下,无论根向那个子树移动都会等价地增加到达另一个端点的代价, ...

  4. 前端vue框架上手记录

    ---恢复内容开始--- Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供: 通过 @vue/cli 搭建交互式的项目脚手架. 通过 @vue/cli + @vue/cli-se ...

  5. LayUI 简单的全选和反选小例子

    比较简单实用,直接上代码,主要就是  lay-filter="ischange"   触发事件和  checkbox 的 class="ids" 对上就行: H ...

  6. Java基础|01.基础语法(1)

    目录 00x1 基本语法 1.类的语法 2.对象的语法 3.方法的声明 4.小例子 00x2 类和对象的关系 1.堆.栈和元空间 2.基本数据类型和引用数据类型的区别 3. 空对象(null) 00x ...

  7. 2202.10.11 CSP-S 2021 测试总结

    2022.10.11 CSP-S 2021 测试总结 这场打的好心累, \(T1\) 想了 \(1\) 个多小时才想出来的, \(T2\),\(T4\)题意赛时还没读明白. \(T1\):廊桥分配 \ ...

  8. 【alive-progress】Python控制台输出动态进度条

    简介 alive-progress是一种具有实时吞吐量和非常酷的动画新型的进度条python库. 使用 from alive_progress import alive_bar import time ...

  9. 西瓜书3.3 尝试解题(python)对率回归 极大似然估计

    数据如下: x01=[0.697,0.774,0.634,0.608,0.556,0.403,0.481,0.437,0.666,\ 0.243,0.245,0.343,0.639,0.657,0.3 ...

  10. PTA两个有序链表序列的合并

    本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义:   List Merge( List L1, List L2 );   其中List结构定义如下:   ...