如何得到sdcard中的所用图片 http://hi.csdn.net/attachment/201009/18/65182_1284810097qx88.jpg 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 使用SD需要加permission http://www.blogjava.net/changcheng/archive/2010/03/01/314214.html 该怎么给你说那.第一种方式实现的是用本身的媒体扫描来做的,不是很好,你那种方式得到的是一个缩略图,其实你URI打开的是一个提供器里面的数据库,在数据库里面有一个DATA字段,哪个里面才是路径.第二种方式是对整个SD卡的文件进行读取,但是你的哪个方法还是有问题.第一就是在目录下面还有目录的时候你没有解决.第二就是它仅仅是对文件名进行匹配,如果你对一个文件的名字改了,它也可以得到该数据,但是本身并不能读取.'建议还是使用本身的媒体扫描. 這個不需要如此複雜String path = "/sdcard/xxxx.png";Bitmap bitmap = BitmapFactory.decodeFile(path); //這時候你已經得到了這個圖片了bitmap.getWidth();bitmap.getHeight();......//各種操作 看錯你的題目了,是所有的圖片這個就是一個文件遊覽器的功能,然後把後綴屬於圖片的取出來<?xml version="1.0" encoding="utf-8"?><resources><array name="fileEndingImage"> <item>.png</item> <item>.gif</item> <item>.jpg</item> <item>.jpeg</item> <item>.bmp</item> </array><array name="fileEndingAudio"> <item>.mp3</item> <item>.wav</item> <item>.ogg</item> <item>.midi</item> </array><array name="fileEndingPackage"> <item>.jar</item> <item>.zip</item> <item>.rar</item> <item>.gz</item> </array><array name="fileEndingWebText"> <item>.htm</item> <item>.html</item> <item>.php</item> </array></resources>第一個ARRAY就是圖片類的,然後for(File currentFile : files){ if (currentFile.isDirectory()) { currentIcon = getResources().getDrawable(R.drawable.folder); }else{ String fileName = currentFile.getName(); if(checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingImage))){ //這裡寫你對於圖片類文件的操作 }else if(checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingWebText))){ //網絡類文件 }else if(checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingPackage))){ //壓縮包類文件 }else if(checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingAudio))){ //音頻類文件 }else{ //其他文件 } } AndroidManifest.xml中加入<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 代码:private static final String TAG = "Test"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); List<File> listFile = new ArrayList<File>(); String path = "/sdcard/"; try { File home = new File(path); if (home.listFiles(new FileFilters()).length>0) { for (File file :home.listFiles(new FileFilters())) { listFile.add(file);//取得文件 } } } catch (Exception e) { e.printStackTrace(); } Log.d(TAG, "listFile===>"+listFile); } class FileFilters implements FilenameFilter{ @Override public boolean accept(File dir, String filename) { // TODO Auto-generated method stub if (filename.endsWith(".jpg")|| filename.endsWith(".gif")|| filename.endsWith(".png")|| filename.endsWith(".bmp")) { return true; } return false; } }}Log显示:09-21 02:35:10.035: DEBUG/Test(249): listFile===>[/sdcard/å¨æ°ä¼¦AlbumArt.jpg, /sdcard/éå¥è¿ AlbumArt.jpg] 在android下编译.C程序出错 在Eclipse下搭建了Android开发环境,编译没问题,可是类和函数的“自动完成”功能没有出现 extern "C" 是什么意思? 关于Android环境的配置 Activity问题 android 这个View怎么写? 布局中的控件显示不了,这样子写有错吗? 如何检测单个APP的耗电量 求大神告知Android Studio 初次运行无法成功安装Gradle的解决方法 如何取得本地地址,并在地图上标出来。 Android 初始化问题
使用SD需要加permission
第二种方式是对整个SD卡的文件进行读取,但是你的哪个方法还是有问题.第一就是在目录下面还有目录的时候你没有解决.第二就是它仅仅是对文件名进行匹配,如果你对一个文件的名字改了,它也可以得到该数据,但是本身并不能读取.'
建议还是使用本身的媒体扫描.
String path = "/sdcard/xxxx.png";
Bitmap bitmap = BitmapFactory.decodeFile(path); //這時候你已經得到了這個圖片了
bitmap.getWidth();
bitmap.getHeight();
......//各種操作
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="fileEndingImage">
<item>.png</item>
<item>.gif</item>
<item>.jpg</item>
<item>.jpeg</item>
<item>.bmp</item>
</array>
<array name="fileEndingAudio">
<item>.mp3</item>
<item>.wav</item>
<item>.ogg</item>
<item>.midi</item>
</array>
<array name="fileEndingPackage">
<item>.jar</item>
<item>.zip</item>
<item>.rar</item>
<item>.gz</item>
</array>
<array name="fileEndingWebText">
<item>.htm</item>
<item>.html</item>
<item>.php</item>
</array>
</resources>
第一個ARRAY就是圖片類的,然後
for(File currentFile : files){
if (currentFile.isDirectory()) {
currentIcon = getResources().getDrawable(R.drawable.folder);
}else{
String fileName = currentFile.getName();
if(checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingImage))){
//這裡寫你對於圖片類文件的操作
}else if(checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingWebText))){
//網絡類文件
}else if(checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingPackage))){
//壓縮包類文件
}else if(checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingAudio))){
//音頻類文件
}else{
//其他文件
}
}
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
代码:
private static final String TAG = "Test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
List<File> listFile = new ArrayList<File>();
String path = "/sdcard/";
try {
File home = new File(path);
if (home.listFiles(new FileFilters()).length>0) {
for (File file :home.listFiles(new FileFilters())) {
listFile.add(file);//取得文件
}
}
} catch (Exception e) {
e.printStackTrace();
}
Log.d(TAG, "listFile===>"+listFile);
}
class FileFilters implements FilenameFilter{
@Override
public boolean accept(File dir, String filename) {
// TODO Auto-generated method stub
if (filename.endsWith(".jpg")||
filename.endsWith(".gif")||
filename.endsWith(".png")||
filename.endsWith(".bmp")) {
return true;
}
return false;
}
}
}
Log显示:
09-21 02:35:10.035: DEBUG/Test(249): listFile===>[/sdcard/å¨æ°ä¼¦AlbumArt.jpg, /sdcard/éå¥è¿ AlbumArt.jpg]