- 浏览: 684473 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
Hippyqq:
谢谢很有用,
java中遍历MAP的几种方法 -
XSoftlab:
超详细。。。Java map 详解 - 用法、遍历、排序、常用 ...
java中遍历MAP的几种方法 -
bobo22:
importnet.sf.fmj.ui.application ...
java来调用电脑视频摄像头拍照进行截图 -
qq981378640:
#include <stdio.h>
int ...
c语言中unsigned类型和普通类型间的转换 -
qq981378640:
楼主你这样有点复杂了,直接这样写更好更方便
#include ...
c语言中unsigned类型和普通类型间的转换
刚因为项目有需求,需求移动应用获取本地文件有下面两个
第一个是指定要搜索的目录,第二个是文件类型,譬如“*.jpg;*.png;*.gif”.
从资料中查询得到有多种方法,主要有两一种,一种是直接查询,另一种方式是利用广播的方式。
广播的方式
通过主动的方式通知系统我们需要文件列表,要向系统发送广播
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse(“file://”
+ Environment.getExternalStorageDirectory())));
然后通过接收器获取系统文列表
public class MediaScannerReceiver extends BroadcastReceiver
{
private final static String TAG = ”MediaScannerReceiver”;
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Uri uri = intent.getData();
String externalStoragePath = Environment.getExternalStorageDirectory().getPath();
if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
// scan internal storage
scan(context, MediaProvider.INTERNAL_VOLUME);
} else {
if (uri.getScheme().equals(“file”)) {
// handle intents related to external storage
String path = uri.getPath();
if (action.equals(Intent.ACTION_MEDIA_MOUNTED) &&
externalStoragePath.equals(path)) {
scan(context, MediaProvider.EXTERNAL_VOLUME);
} else if (action.equals(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE) &&
path != null && path.startsWith(externalStoragePath + ”/”)) {
scanFile(context, path);
}
}
}
}
private void scan(Context context, String volume) {
Bundle args = new Bundle();
args.putString(“volume”, volume);
context.startService(
new Intent(context, MediaScannerService.class).putExtras(args));
}
private void scanFile(Context context, String path) {
Bundle args = new Bundle();
args.putString(“filepath”, path);
context.startService(
new Intent(context, MediaScannerService.class).putExtras(args));
}
}
注意部分:
通过 Intent.ACTION_MEDIA_MOUNTED 进行全扫描
通过 Intent.ACTION_MEDIA_SCANNER_SCAN_FILE 扫描某个文件
上述方法是不支持对文件夹的 即:Uri data 必须是 文件的Uri 如果是文件夹的 其不会起作用的 切记!
方法二 直接查找
这种方法是最原始的方法,通过获取文件目录递归来查询文件
正面是主要实现:
/**
* 获取指定位置的指定类型的文件
*
* @param path
* 文件夹路径
* @param type
* 文件类型(如“*.jpg;*.png;*.gif”)
* @return
*/
public static void getFileList(String path, String type,
final OnFileListCallback onFileListCallback) {
new AsyncTask<String, String, String>() {
ArrayList<FileInfo> list = new ArrayList<FileInfo>();
@Override
protected void onPostExecute(String result) {
onFileListCallback.SearchFileListInfo(list);
}
@Override
protected String doInBackground(String… params) {
// TODO Auto-generated method stub
String path = params[1].substring(params[1]
.lastIndexOf(“.”) + 1);
File file = new File(params[0]);
scanSDCard(file,path,list);
return null;
}
}.execute(path, type, “”);
}
/**
* 扫描完成后的回调,获取文件列表必须实现
*
* @author cola
*
*/
public interface OnFileListCallback {
/**
* 返回查询的文件列表
* @param list 文件列表
*/
public void SearchFileListInfo(List<FileInfo> list);
}
private static void scanSDCard(File file, String ext, ArrayList<FileInfo> list) {
if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null) {
for (int i = 0; i < files.length; i++) {
File tmp = files[i];
if (tmp.isFile()) {
String fileName = tmp.getName();
String filePath = tmp.getName();
if (fileName.indexOf(“.”) >= 0) {
fileName = fileName.substring(fileName
.lastIndexOf(“.”) + 1);
if (ext != null && ext.equalsIgnoreCase(fileName)) {
AspLog.i(TAG, filePath);
FileInfo info = new FileInfo();
info.fileName = filePath;
info.filePath = tmp.getAbsolutePath();
list.add(info);
}
}
} else
scanSDCard(tmp, ext, list);
}
}
} else {
if (file.isFile()) {
String fileName = file.getName();
String filePath = file.getName();
if (fileName.indexOf(“.”) >= 0) {
fileName = fileName
.substring(fileName.lastIndexOf(“.”) + 1);
if (ext != null && ext.equalsIgnoreCase(fileName)) {
AspLog.i(TAG, filePath);
FileInfo info = new FileInfo();
info.fileName = filePath;
info.filePath = file.getAbsolutePath();
list.add(info);
}
}
}
}
}
转 http://www.yidin.net/?p=9493
第一个是指定要搜索的目录,第二个是文件类型,譬如“*.jpg;*.png;*.gif”.
从资料中查询得到有多种方法,主要有两一种,一种是直接查询,另一种方式是利用广播的方式。
广播的方式
通过主动的方式通知系统我们需要文件列表,要向系统发送广播
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse(“file://”
+ Environment.getExternalStorageDirectory())));
然后通过接收器获取系统文列表
public class MediaScannerReceiver extends BroadcastReceiver
{
private final static String TAG = ”MediaScannerReceiver”;
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Uri uri = intent.getData();
String externalStoragePath = Environment.getExternalStorageDirectory().getPath();
if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
// scan internal storage
scan(context, MediaProvider.INTERNAL_VOLUME);
} else {
if (uri.getScheme().equals(“file”)) {
// handle intents related to external storage
String path = uri.getPath();
if (action.equals(Intent.ACTION_MEDIA_MOUNTED) &&
externalStoragePath.equals(path)) {
scan(context, MediaProvider.EXTERNAL_VOLUME);
} else if (action.equals(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE) &&
path != null && path.startsWith(externalStoragePath + ”/”)) {
scanFile(context, path);
}
}
}
}
private void scan(Context context, String volume) {
Bundle args = new Bundle();
args.putString(“volume”, volume);
context.startService(
new Intent(context, MediaScannerService.class).putExtras(args));
}
private void scanFile(Context context, String path) {
Bundle args = new Bundle();
args.putString(“filepath”, path);
context.startService(
new Intent(context, MediaScannerService.class).putExtras(args));
}
}
注意部分:
通过 Intent.ACTION_MEDIA_MOUNTED 进行全扫描
通过 Intent.ACTION_MEDIA_SCANNER_SCAN_FILE 扫描某个文件
上述方法是不支持对文件夹的 即:Uri data 必须是 文件的Uri 如果是文件夹的 其不会起作用的 切记!
方法二 直接查找
这种方法是最原始的方法,通过获取文件目录递归来查询文件
正面是主要实现:
/**
* 获取指定位置的指定类型的文件
*
* @param path
* 文件夹路径
* @param type
* 文件类型(如“*.jpg;*.png;*.gif”)
* @return
*/
public static void getFileList(String path, String type,
final OnFileListCallback onFileListCallback) {
new AsyncTask<String, String, String>() {
ArrayList<FileInfo> list = new ArrayList<FileInfo>();
@Override
protected void onPostExecute(String result) {
onFileListCallback.SearchFileListInfo(list);
}
@Override
protected String doInBackground(String… params) {
// TODO Auto-generated method stub
String path = params[1].substring(params[1]
.lastIndexOf(“.”) + 1);
File file = new File(params[0]);
scanSDCard(file,path,list);
return null;
}
}.execute(path, type, “”);
}
/**
* 扫描完成后的回调,获取文件列表必须实现
*
* @author cola
*
*/
public interface OnFileListCallback {
/**
* 返回查询的文件列表
* @param list 文件列表
*/
public void SearchFileListInfo(List<FileInfo> list);
}
private static void scanSDCard(File file, String ext, ArrayList<FileInfo> list) {
if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null) {
for (int i = 0; i < files.length; i++) {
File tmp = files[i];
if (tmp.isFile()) {
String fileName = tmp.getName();
String filePath = tmp.getName();
if (fileName.indexOf(“.”) >= 0) {
fileName = fileName.substring(fileName
.lastIndexOf(“.”) + 1);
if (ext != null && ext.equalsIgnoreCase(fileName)) {
AspLog.i(TAG, filePath);
FileInfo info = new FileInfo();
info.fileName = filePath;
info.filePath = tmp.getAbsolutePath();
list.add(info);
}
}
} else
scanSDCard(tmp, ext, list);
}
}
} else {
if (file.isFile()) {
String fileName = file.getName();
String filePath = file.getName();
if (fileName.indexOf(“.”) >= 0) {
fileName = fileName
.substring(fileName.lastIndexOf(“.”) + 1);
if (ext != null && ext.equalsIgnoreCase(fileName)) {
AspLog.i(TAG, filePath);
FileInfo info = new FileInfo();
info.fileName = filePath;
info.filePath = file.getAbsolutePath();
list.add(info);
}
}
}
}
}
转 http://www.yidin.net/?p=9493
发表评论
-
android 滚动条
2011-01-17 14:05 2115在ListView中添加属性: android:scrollb ... -
LayoutInflater的使用 android
2010-10-28 15:54 1178在实际开发种LayoutInflater这个类还是非常有用的, ... -
Android虚拟机大屏幕设置(开发平板电脑程序)
2010-08-31 10:33 2979如果使用android进行大屏幕开发,比如开发基于androi ... -
adb shell下使用命令行删除android系统中指定文件和文件夹
2010-08-25 13:07 26331记录一下命令: tools>adb remount t ... -
Android permission 访问权限大全
2010-07-30 23:03 1163androidmanifest.xml中声明相关权限请求, 完 ... -
android实现底部菜单栏
2010-07-29 15:56 7171android程序,许多时候需要菜单栏显示在底部或顶部,但是没 ... -
Android ExpandableListActivity 学习笔记
2010-07-27 21:33 3401An activity that displays an ex ... -
[转]android animation的应用实例
2010-07-20 23:13 1853此文件名为myanimation.xml 位于 res/ani ... -
Android入门第八篇之GridView(九宫图)
2010-07-15 17:32 2544GridView更是实现九宫图的首选!本文就是介绍如何使用Gr ... -
Android入门第五篇之TableLayout (二)//生成10行,8列的表格
2010-07-15 14:02 4182TableLayout添加数据(9宫图也可以用TableLay ... -
Android工具之Hierarchy Viewer--分析应用程序UI布局
2010-07-14 23:37 3689Android SDK提供的Hierarchy Viewer工 ... -
apk打包
2010-07-14 23:27 10406什么是apk文件 APK是Android Package Ki ... -
Android Intent的几种用法全面总结
2010-07-14 18:05 1183Intent, 用法 Intent应该算是Android中特有 ... -
进度条(ProgressBar)拖动条(SeekBar)android
2010-07-12 17:28 16774本文源自http://www.cnblogs.com/Terr ... -
TextView 在xml文件中的解释 android
2010-07-11 19:27 6874包位置:android.widget.TextView X ... -
Activity的跳转与传值
2010-07-05 16:54 3216Activity跳转与传值,主要是通过Intent类来连接多个 ... -
android:属性 layout_alignParentRight android:paddingRight
2010-07-03 22:59 11539android:layout_alignParentRight ... -
android模拟器输入中文
2010-06-29 16:50 2814首先:在设置里,选区域和文本,里面把谷歌拼音输入法复选上,就o ... -
Android Map开发基础知识学习笔记
2010-06-29 11:14 3468注册 Android 地图 API 密钥 运行:keyto ... -
Android MapView 申请apiKey
2010-06-29 11:01 13041. 首先先要获取你的debug keystore位置: 打开 ...
相关推荐
在Android系统中,获取照片的拍摄日期以及其他相关信息是通过读取图像文件的元数据来实现的。这些元数据通常存储在JPEG文件的Exchangeable Image File Format (EXIF) 标签中。以下是一些关键步骤和知识点,教你如何...
在Android平台上,开发人员经常需要处理读取本地文件的需求,特别是在构建阅读类应用或文档管理器时。这个“android中读取本地文件demo”提供了一个示例,演示了如何读取存储在SD卡上的Word和PDF文件,并将它们的...
在Android开发中,有时我们需要获取应用程序的包大小、缓存大小以及数据大小,这有助于我们进行性能优化、存储管理或者用户信息展示。本教程将详细讲解如何利用反射和AIDL技术来实现这一功能。 首先,我们需要理解...
本文将深入探讨如何获取Android应用的32位签名,以及这个过程的重要性。 首先,我们需要理解Android应用签名的基本概念。在Android系统中,签名是一个数字证书,它包含了开发者的信息和用于验证APK的公钥。这个签名...
Android7.0 Intent打开文件管理器 获取文件真实路径。虽然网上很多demo,但是没有一个能够兼容所有Android机的,去网上学习了然后自己亲测过手机分别有Android7.0/6.0/4.3个版本。
这个方法需要一个参数,表示要获取的应用类型。通常,我们传入`PackageManager.GET_META_DATA`来获取额外的信息。 ```java List<PackageInfo> packages = packageManager.getInstalledPackages(PackageManager.GET...
JNI是Android提供的一种接口,使得Java应用程序可以调用C/C++编写的原生代码。这在需要高性能计算、访问硬件特性或利用已有的C库时特别有用。JNI的核心在于`JNIEnv`指针,它是Java虚拟机与本地代码之间的桥梁,提供...
在Android设备中,按Back键会将当前的Activity出栈销毁,而按HOME键却会将之隐藏到后台。如若有多个这样的程序这样操作,我们不知道后台到底有多少个正在运行的应用程序。此程序的目的就列举出后台正在运行的应用...
2. **获取应用元数据**:使用`getApplicationInfo()`方法,可以获取指定包名的应用的`ApplicationInfo`对象,该对象包含了应用的元数据,如标签、图标、是否是系统应用等。 3. **获取应用标签和图标**:`...
在Android开发中,获取本地图片和拍照功能是常见的应用场景,比如在社交应用或者个人资料编辑界面。本篇文章将详细介绍如何实现在Android应用中获取本地图片并显示在`ImageButton`上,以及如何调用相机拍摄新照片并...
`LogWriter`是一个自定义工具,用于将Android应用的日志信息写入本地文件,而不是仅仅依赖于系统的`Logcat`。这使得开发者能够更方便地保存、查看和分析日志数据,尤其是在设备无法连接到电脑或需要离线分析的情况下...
在Android开发中,JNI(Java Native Interface)是一种技术,允许Java代码和其他语言写的代码进行交互。当需要执行一些性能敏感或者Java无法直接处理的任务时,开发者通常会利用JNI调用C/C++原生代码。本话题关注的...
第2篇为应用开发篇,通过实例介绍了Android UI布局、Android人机界面、手机硬件设备的使用、Android本地存储系统、Android中的数据库、多线程设计、Android传感器、Android游戏开发基础、Android与Internet,以及...
在Android开发中,有时我们需要将应用内部的资源文件,如配置文件、数据库文件或静态数据等,复制到手机的外部存储(内存或SD卡)以便于应用运行时使用。这个过程通常涉及到Android的文件系统操作和权限管理。下面将...
在Android平台上,从指定文件夹显示图片涉及到一系列的步骤和技术,包括文件系统操作、图片加载库的使用以及UI设计。以下是对这个主题的详细讲解: 首先,我们需要理解Android的文件系统结构。Android设备通常有两...
在Android平台上,获取CPU使用率和内存实时数据是开发者进行性能监控、优化应用或实现系统监控功能的关键步骤。本文将详细介绍如何在Android中获取这些关键信息,并提供相关的代码示例。 首先,我们要理解CPU使用率...
在Android开发中,读取文本文件是常见的任务,特别是在创建应用程序需要展示或处理文本数据时。这个"Android读取文本文件的demo"就是一个很好的学习示例,它演示了如何从res/raw目录下读取txt文件并将其内容显示在...
获取`PackageInfo`有两种主要方式: 1. **通过包名查询**:使用`getPackageInfo(String packageName, int flags)`方法。传入应用的包名(例如"com.example.app")和标志(例如`GET_INSTALLED_PACKAGES`或`GET_SIZE_...
在Android系统中,打开各种类型的文件是一个常见的需求,这...通过上述方法,Android开发者可以轻松地实现根据文件类型自动打开相应应用程序的功能。记得在处理文件时始终考虑到用户体验和安全性,避免出现潜在的问题。
`doInBackground`方法获取了指定包名的应用的`PackageInfo`对象,其中包含了`requestedPermissions`字段,这是一个字符串数组,列出了应用申请的所有权限。 需要注意的是,为了运行上述代码,你需要确保你的应用...