您的位置:首页 > 移动开发 > Android开发

Android 开发-获取SD卡所有指定类型的文件

2012-11-14 12:33 274 查看
如何获取SD卡所有指定类型的文件--

首先想到的是利用JAVA的File 遍历SD卡,但这样实在是太慢了。

 最后查找API文档 找到了


这个table 里面包含了SD卡的所有文件,包括媒体文件等。

直接上代码。

import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.app.Activity;
import android.database.Cursor;
import android.util.Log;
import android.webkit.MimeTypeMap;
import android.widget.TextView;

public class MainActivity extends Activity {

private static final String TAG = "MainActivity";
TextView textView = null;

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

textView = (TextView) findViewById(R.id.text);

String selectMimeType = MediaStore.Files.FileColumns.MIME_TYPE
+ " = ?";
String apkMimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
"apk");
String[] selectArgsApk = new String[]{ apkMimeType };

Log.d("APK", apkMimeType);

String p = new String();
String[] projection = new String[] { MediaStore.Files.FileColumns._ID,
MediaStore.Files.FileColumns.DATA,
MediaStore.Files.FileColumns.SIZE };
Cursor cursor = getContentResolver().query(
Uri.parse("content://media/external/file"), projection,
MediaStore.Files.FileColumns.DATA + " like ?", new String[]{"%.apk"}, null);
//Cursor cursor1 = getContentResolver().query(
//		Uri.parse("content://media/external/file"), projection,
//		selectMimeType, selectArgsApk, null);
//Log.d("APK", cursor1.getCount()+"");
if (cursor != null) {
if (cursor.moveToFirst()) {
int idindex = cursor
.getColumnIndex(MediaStore.Files.FileColumns._ID);
int dataindex = cursor
.getColumnIndex(MediaStore.Files.FileColumns.DATA);
int sizeindex = cursor
.getColumnIndex(MediaStore.Files.FileColumns.SIZE);
do {
String id = cursor.getString(idindex);
String path = cursor.getString(dataindex);
String size = cursor.getString(sizeindex);
p += id + "-" + path + "-" + size + "\n";
} while (cursor.moveToNext());
}
}
cursor.close();
//cursor1.close();
textView.setText(p);

}
}


本来想通过MimeType 匹配查找(就是被注释起来的方法但是匹配出来的结果只有一个。。。 不知道为什么!!)

只能通过现在的方法搞定。

终于知道为什么了 , 查看了其他手机里这张表的数据 发现



mime_type的数据字段全是空。

这可能使各种手机的差异性导致的吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: