Android 开发-获取SD卡所有指定类型的文件
2012-11-14 12:33
274 查看
如何获取SD卡所有指定类型的文件--
首先想到的是利用JAVA的File 遍历SD卡,但这样实在是太慢了。
最后查找API文档 找到了
![](http://img.my.csdn.net/uploads/201211/14/1352865580_5037.png)
这个table 里面包含了SD卡的所有文件,包括媒体文件等。
直接上代码。
本来想通过MimeType 匹配查找(就是被注释起来的方法但是匹配出来的结果只有一个。。。 不知道为什么!!)
只能通过现在的方法搞定。
终于知道为什么了 , 查看了其他手机里这张表的数据 发现
![](http://img.my.csdn.net/uploads/201211/14/1352868224_8578.png)
mime_type的数据字段全是空。
这可能使各种手机的差异性导致的吧
首先想到的是利用JAVA的File 遍历SD卡,但这样实在是太慢了。
最后查找API文档 找到了
![](http://img.my.csdn.net/uploads/201211/14/1352865580_5037.png)
这个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 匹配查找(就是被注释起来的方法但是匹配出来的结果只有一个。。。 不知道为什么!!)
只能通过现在的方法搞定。
终于知道为什么了 , 查看了其他手机里这张表的数据 发现
![](http://img.my.csdn.net/uploads/201211/14/1352868224_8578.png)
mime_type的数据字段全是空。
这可能使各种手机的差异性导致的吧
相关文章推荐
- (java)获取某文件夹下面所有的指定类型的文件名称,并根据情况返回可用的名称
- 【Android开发经验】如何获取媒体库中所有音频文件信息,并在文件增删后及时更新媒体库
- android开发学习(二)——保存文件到手机内存和SD卡,文件访问权限,获取内存大小
- Android 读取SD卡指定后缀的所有文件
- android 获取指定路径下所有文件,将文件从一个目录copy到另一个目录,执行linux命令
- 获取文件夹中指定类型的所有文件名和文件大小
- android应用 获取本地指定类型文件 的两种最优方法
- VC-获取文件夹中的指定类型的所有文件名和文件大小
- 获取目录下指定类型的所有文件
- C#.NET获取指定文件夹下所有的指定类型文件
- android应用 获取本地指定类型文件 的两种最优方法
- android开发访问sd卡时,始终找不到指定文件
- C#.NET获取指定文件夹下所有的指定类型文件
- Android高效获取指定类型文件,获取文件不求人!
- Android 读取SD卡指定后缀的所有文件
- 获取指定目录下指定类型所有文件的全路径及文件名
- android应用 获取本地指定类型文件 的两种最优方法
- 【Android】【小知识】如何获取指定目录下的所有文件的集合
- Android 获取SD卡指定格式的文件
- Android 删除SD卡一个指定文件夹和其下的所有文件