如何读取手机中相册的图像文件

对于以下的代码片段出现一个问题。实际上我是想读取手机中相册的图片。文件名为image2.jpg ,image3.jpg 的图片。但是报出了错误。
代码是:

public static Uri getRandomImage(ContentResolver resolver) {

    String secondo = "image2.jpg";
    String terzo = "image3.jpg";
    String quarto = "image4.jpg";
    String quinto = "image5.jpg";
    String sesto = "image6.jpg";
    String settimo = "image7.jpg";
    String ottavo = "image8.jpg";

    String[] projection = new String[] {
        BaseColumns._ID,
        MediaColumns.DATA,

    };



    Uri uri = Media.EXTERNAL_CONTENT_URI;

    Cursor cursor =  Media.query(resolver, uri, projection, null, MediaColumns._ID);
    if (cursor == null || cursor.getCount() <= 0) {
            return null;
    }

    cursor.moveToPosition(new Random().nextInt(cursor.getCount()));

    String completefilepath = cursor.getString(cursor.getColumnIndex(MediaColumns.DATA));
    if(completefilepath == secondo || completefilepath == terzo || completefilepath == quarto ||
            completefilepath == quinto || completefilepath == sesto || completefilepath == settimo ||
            completefilepath == ottavo){

        string = cursor.getString(1);

    }
    return Uri.withAppendedPath(uri, string);
}

LOGCAT:

E/AndroidRuntime(9147): FATAL EXCEPTION: main
E/AndroidRuntime(9147): java.lang.IllegalStateException: Unknown URL: content://media/external/images/media/null
E/AndroidRuntime(9147):     at android.os.Parcel.readException(Parcel.java:1268)
E/AndroidRuntime(9147):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160)
E/AndroidRuntime(9147):     at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:125)
E/AndroidRuntime(9147):     at android.content.ContentProviderProxy.openAssetFile(ContentProviderNative.java:538)
E/AndroidRuntime(9147):     at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:467)
E/AndroidRuntime(9147):     at android.content.ContentResolver.openFileDescriptor(ContentResolver.java:380)
E/AndroidRuntime(9147):     at it.bisemanuDEV.slidepuzzle.TileView.getImageFromUri(TileView.java:559)
E/AndroidRuntime(9147):     at it.bisemanuDEV.slidepuzzle.TileView.newGame(TileView.java:156)
E/AndroidRuntime(9147):     at it.bisemanuDEV.slidepuzzle.SlidePuzzleActivity.onOptionsItemSelected(SlidePuzzleActivity.java:377)
E/AndroidRuntime(9147):     at android.app.Activity.onMenuItemSelected(Activity.java:2762)
E/AndroidRuntime(9147):     at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730)
E/AndroidRuntime(9147):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143)
E/AndroidRuntime(9147):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
E/AndroidRuntime(9147):     at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532)
E/AndroidRuntime(9147):     at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
E/AndroidRuntime(9147):     at android.view.View$PerformClick.run(View.java:8819)
E/AndroidRuntime(9147):     at android.os.Handler.handleCallback(Handler.java:603)
E/AndroidRuntime(9147):     at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(9147):     at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(9147):     at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(9147):     at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(9147):     at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(9147):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(9147):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(9147):     at dalvik.system.NativeStart.main(Native Method)

3个回答

你可以参考这个方法,然后再自己变通一下
XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ImageView
        android:id="@+id/imgView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"></ImageView>
    <Button
        android:id="@+id/buttonLoadPicture"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:text="Load Picture"
        android:layout_gravity="center"></Button>
</LinearLayout>

class文件:

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class ImageGalleryDemoActivity extends Activity {


    private static int RESULT_LOAD_IMAGE = 1;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button buttonLoadImage = (Button) findViewById(R.id.buttonLoadPicture);
        buttonLoadImage.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                Intent i = new Intent(
                        Intent.ACTION_PICK,
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

                startActivityForResult(i, RESULT_LOAD_IMAGE);
            }
        });
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();

            ImageView imageView = (ImageView) findViewById(R.id.imgView);
            imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

        }
    }
}

这个错好像是因为你的手机的保存图片的数据库中没有上述匹配的图片,所以string为空的,故当拼接的时候会出现null

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
                photoPickerIntent.setType("image/*");
                startActivityForResult(photoPickerIntent, int requestCode);
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
unity 读取手机相册
unity 读取手机相册,安卓和ios的两种都有,
如何读取三维图像文件
有三维图(地理信息系统方面的dem模型三维图),请问怎么用directx读取打开。rn有什么意见见解。谢谢!
如何读取图像文件
就是想windows 里,将图像进行比较。
读取手机相册里的照片
急求读取手机相册里的照片程序(j2me)
读取图像文件
1. 将字节数组转换成图像文件 byte[] byteArray = 要处理的字节数组 InputStream in = new ByteArrayInputStream(byteArray); BufferedImage img; try { ...
如何从ACCESS数据库中读取二进制图像文件
我已经成功将图像文件存入ACCESS数据库,可是不能把它从数据库中读出来,请各位给点指点。最好能给我一点代码实例,谢谢!
matlab批处理读取图像文件和批写图像文件
源码很简单如下: clc clear all close all for k=1:62     s=strcat('E:\20151020\',int2str(k-1),'.bmp');     I=imread(s);     I=im2double(I);     level=graythresh(I); %计算灰度图像的阈值     BW=im2bw(I,level);  
读取手机相册,从手机相册读取图片剪切,拍照获取图片,获取拍照图片进行剪切
今天偶没事儿,就试着做读取手机相册,从手机相册读取图片剪切,拍照获取图片,获取拍照图片进行剪切.虽然,我知道大家都会做,但估计大部分人都会使用crop的jar包,个人觉得这个太low,我这个项目,只需要几个函数就行,就能完成上诉四个要求,没有所谓的添加库之类的.Demo链接地址如下: http://download.csdn.net/detail/jimtrency/9558277
如何读取手机中的短信?
请问如何读取手机中的短信?我在VB里试了at+cgml,没有看到返回的数值。谢谢!
Android开发 华为手机读取相册闪退问题
说明:不管是用的第三方控件还是自己写的,在选择图片或者修改头像时需要访问手机相册,不做处理华为手机会出现闪退,这时通过代码动态设置读写SD卡权限即可. 1.代码: private static final int REQUEST_EXTERNAL_STORAGE = 1; // 不可改 private static String[] PERMISSIONS_STORAGE = {
BMP图像文件的读取
vs2013 BMP图像文件的读取 获取bmp图像文件的头文件格式以及每点的像素值,并且实现了图像的旋转,保存图像
GDI读取jpg图像文件
GDI读取jpg图像文件:rnGetCodecSlsid(const WCHAR*,CLSID*)rn这个函数是干什么用的?
OpenCV——读取图像文件
创建一个简单的黑色正方形图像 图像转化为BGR格式 图像文件的读写 BGR图像转化为灰度图像 源代码 import numpy as np import cv2 img = np.zeros((3,3), dtype=np.uint8) print(img) print(img.shape) print('------------------') img = cv2.cvtColor(...
读取OBJ图像文件代码
做图像处理的时候有用的代码。比如3dmax等软件进行图形建模后,需要用程序对模型进行控制,导出为OBJ文件形式是比较常用的方法,这个程序不用自己再麻烦写读OBJ的代码了~直接运行就可以显示图像模型了!很好用!
VTK读取序列图像文件
#include   #include   #include   #include   #include   #include   #include   #include   #include   #include   int main() { //生成图像序列的文件名数组   vtkSmartPointer fileArray = vtkSmartP
opencv读取图像文件
#include &quot;stdafx.h&quot; #include &amp;lt;opencv2/opencv.hpp&amp;gt; using namespace std; using namespace cv; int _tmain(int argc, _TCHAR* argv[]) { const char* imagename = &quot;Lena.jpg&quot;; //从文件中...
CFileDialog dlg读取图像文件
[color=#FF0000] LPCTSTR lpszFilter = "BMP Files(*.bmp)|*.bmp|任何文件|*.*||";rn CFileDialog dlg(TRUE,lpszFilter,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,lpszFilter,NULL);rn CString filename;rn CFile file; //打开文件对话框 rn if ( dlg.DoModal() == IDOPEN )rn rn filename = dlg.GetPathName();rn if ( file.Open(filename,CFile::modeRead|CFile::shareDenyNone,NULL) == 0 )rn rn //读取文件失败rn AfxMessageBox("无法打开文件!",MB_OK,0);rn return FALSE;rn rn //读取文件头rn file.Read(&m_bf,sizeof(m_bf));rn //判断是否为BMP文件rn if ( m_bf.bfType != 0x4d42 )//'BM'rn rn AfxMessageBox("非BMP文件!",MB_OK,0);rn return FALSE;rn rn //判断文件是否损坏rn if ( file.GetLength() != m_bf.bfSize )rn rn AfxMessageBox("文件已损坏,请检查!",MB_OK,0);rn return FALSE;rn rnrn //读文件信息头rn file.Read(&m_bi,sizeof(m_bi));rnrn //计算调色板数目rn m_numQuad = 0;rn if ( m_bi.biBitCount < 24 )rn rn m_numQuad = 1<
读取bmp图像文件数据
用c++语言实现的bmp文件各种信息读取程序
读取数据库图像文件的问题
请问什样才能把SQL数据库里的图像文件显示在 PictureBox里。在SQL数据里已经把图像文件存好了,什样才能读出来。谢谢回复者!
怎么读取png图像文件??
如题,怎么读取png文件?有什么步骤?rn比如:读取txt文件,要先创建个File 对象,然后创建个FileInputStream 对象。rnrn
在手机相册中保存图片失败
UIImagePicker 控制器,在点击相机按钮的时候,预览和使用按钮显示,但是图片没有保存在图片相册中。rnrn代码:rnrn -(void)viewDidAppear:(BOOL)animatedrn picker = [[UIImagePickerController alloc] init];rn // Set the image picker source:rn picker.sourceType = UIImagePickerControllerSourceTypeCamera;rn // Hide the controls:rn picker.showsCameraControls = YES;rn picker.navigationBarHidden = YES;rn // Make camera view full screen:rn picker.wantsFullScreenLayout = YES;rn // Insert the overlay:rn picker.cameraOverlayView = self.view;rn self.view.backgroundColor=[UIColor clearColor];rn // Show the picker:rn [self presentModalViewController:picker animated:YES];rn
iOS之保存图片到手机相册中
-(void)bnt{  //保存整个屏幕的图片     UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow];     DebugLog(@"wid= %@",screenWindow);          UIGraphicsBeginImageContext(screenWind
java如何读取分析处理tiff图像文件?
java有读取处理tiff图像文件的类吗?是什么?rn如何处理 提取内容信息(文件头信息) 最好有个例子?rn谢谢!
java中如何复制图像文件
我现在要编个程序,就是在e:\TDM目录下有个TDM_01Red.jpg的图像文件,运行这个程序后,就把这个图像文件复制到e:\GIL目录下,请问该怎么实现,谢谢。
在sqlserver中如何存储图像文件?
在sqlserver中如何存储图像文件?如何调用?谢谢
怎样快速读取BMP图像文件
我是想通过WINSOCK控件传输BMP图像,目前传输一幅2OOK的图像需要2-3秒,我使用OPEN语句实现,能否快速读取?
python 读取图像文件的三种方式
日常生活中,经常遇到要进行读取文件的情况。三种方式都可以,先列举出来,供大家参考学习。第一种方法:借助PIL模块,读取数据。import numpy as npfrom numpy import *def load_image_PIL(filename,isFlatten=False):    import os    from PIL import Image    import numpy a...
关于读取图像文件的一个问题!!!
已实现从本地磁盘中读取一个图像文件到数组中,现某个文件夹底下有10张图片,且10张图片都是按照001,002,003....一次排列的,能用一个循环把这10张图片一起读进来吗?然后存到多维数组,求高人解答
FileReader读取并显示图像文件
代码如下:rnrnrnrn rn 文件拖放rn rnrnrnrn rnrnrnrnFileReade()事件能进入,就是reader的事件进入不了,不知道是怎么回事?
用VC读取BMP图像文件
各位大侠帮帮忙吧!rn基于形状特征的图像检索系统首先就要用到这个。rn不胜感激!rnrn
使用MIL8.0版本库读取图像文件
使用MIL8.0版本库读取图像文件
调用手机拍照和相册
调用手机拍照和相册 import android.Manifest; import android.annotation.TargetApi; import android.content.ContentUris; import android.content.Intent; import android.content.pm.PackageManager; import android.data...
手机QQ相册.zip
该代码简洁明了,能够实现手机QQ相册功能,且有相应的注释,易于读者理解。
GridView手机相册
GridView实现手机相册功能
手机相册的基本使用
我们在项目开发中,相机是一个比较常用的东西,那么,我们一般如何使用呢 android中相机的使用有两种,一种是调用系统的相机来实现,另一种是我们自定义的相机来实现,那么我们第一步先来了解下使用系统的相机,当然,这种方式是很常用的,所以我在这里就简单地描述一下了 了解android的相机当然是去android得官网了解是最好的 可以看到在官网上面主要的是Camera和c
手机相册 Android
1 本次比赛提交的程序源码已在android 2.2SDK,API8模拟器(320*480、400*800)、 SAMSUNG手机i5700真机上测试通过(320*480 2.2.2版本系统)。作品中涉及相机的模块可能不支持比2.2系统更高的版本。 2 本次代码包中有主程序以及两个皮肤安装包。测试换肤功能前请先安装系统皮肤包。系统皮肤包不会生成快捷方式。 将代码包Import至eclipse后可以看到有3个工程,其中主程序工程中可能会出现lib库加载的路径不对,需要 在工程的properties中的Java Build Path中删除无效的JAR包并重新导入3个JAR包,点击Add External JARs 选择当前工程的lib库中即可。另外如果Project Build Target丢失,选择Android 2.2即可,如果提示GBK编码格式问题,改为UTF-8。
手机屏相册浏览
本JS自适应任何屏幕,手势滑动浏览,双击放大显示,原图拖到边缘自动回弹,再双击可缩小。仿手机原生的相册浏览器 看了很多相册浏览的插件没一个可以双击放大图片的,本来想要JQUERY MOBILE写一个结果JQUERY MOBILE没有双击屏幕事件,还有烦人的自带CSS。所以自己写了个原生的,当然只能在手机浏览器上使用,PC端无触控屏无法使用。有使用问题可联系我。
Android 手机相册图片选择
项目开发中经常遇到选择照片或者拍照并上传到服务器上的情况,本文主要介绍手机中图片的选择及显示.
Android 保存图片到手机相册
有一种很常见的需求,当保存图片的时候,客户需要在相册里面看到那张图片。有时候确实是保存成功了(通过IO流将图片写入了SDCard),但打开相册却看不到那张图片,需要在文件管理软件上才能找到那张图片,在网上找了许多文章,貌似都保存不到相册那里,这应该就是手机品牌的原因,有的品牌的手机能显示在相册里,有的品牌的手机却不能。解决这种问题,最简单粗暴的方法是,用那台手机拍一张照片,然后找到它,查看它的路径详
调用手机相机相册
项目中用到更换头像和认证的功能 所以就写了这个 希望能帮到大家 由于本人技术比较差 写过的有些细节都忘得差不多了 有错希望可以提出 先放效果图给你们看看 首先呢 貌似用到了这两个权限。。貌似是因为我也记不清了 当时尝试了好几种方法 可能会有点乱 但是不会炸 en 貌似不会 //选择图片 implementation 'com.github.lovetuzitong:M...
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件