我使用以下代码获取mime类型的文件:
private String getMimeType(String url) {
String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
Log.e("extension ", extension);
if (extension != null) {
MimeTypeMap mime = MimeTypeMap.getSingleton();
type = mime.getMimeTypeFromExtension(extension);
}
return type;
}
where url is the absolute file path
i am getting file and folder by the following way
File file_arr [];
file_arr = new File(Environment.getExternalStorageDirectory().getPath()).listFiles();
url = file_arr[i].getAbsolutePath();
Run Code Online (Sandbox Code Playgroud)
这是正确的,但它返回null,对于哪个文件在其文件名中有点".".
例如
如果文件名是picture1.jpg那么getMimeType()返回image/jpeg
在文件名的情况下,例子27-05-2012 22.05.14.jpg的名称中有点(.),则getMimeType()返回null.
我已将文件重命名为27-05-2012.jpg,其返回图像/ jpeg.
我的问题如何获取Android上所有类型的文件名(有点或特殊字符)的mime类型?请帮我.
我正在按照本教程,我在模拟器上测试它,当我运行这个项目并单击它崩溃的按钮并给我以下错误
07-27 06:33:30.324: E/AndroidRuntime(10972): FATAL EXCEPTION: main
07-27 06:33:30.324: E/AndroidRuntime(10972): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.GET_CONTENT typ=file/ * }
07-27 06:33:30.324: E/AndroidRuntime(10972): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
07-27 06:33:30.324: E/AndroidRuntime(10972): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
07-27 06:33:30.324: E/AndroidRuntime(10972): at android.app.Activity.startActivityForResult(Activity.java:2817)
07-27 06:33:30.324: E/AndroidRuntime(10972): at com.exercise.AndroidPick_a_File.AndroidPick_a_File$1.onClick(AndroidPick_a_File.java:35)
07-27 06:33:30.324: E/AndroidRuntime(10972): at android.view.View.performClick(View.java:2408)
07-27 06:33:30.324: E/AndroidRuntime(10972): at android.view.View$PerformClick.run(View.java:8816)
07-27 06:33:30.324: E/AndroidRuntime(10972): at android.os.Handler.handleCallback(Handler.java:587)
07-27 06:33:30.324: E/AndroidRuntime(10972): at android.os.Handler.dispatchMessage(Handler.java:92)
07-27 06:33:30.324: E/AndroidRuntime(10972): at android.os.Looper.loop(Looper.java:123)
07-27 06:33:30.324: E/AndroidRuntime(10972): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-27 06:33:30.324: E/AndroidRuntime(10972): at java.lang.reflect.Method.invokeNative(Native Method) …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我正在创建一个文件。有时我的应用程序会崩溃,这是因为文件名包含不允许的字符。我知道我可以使用 删除这些字符String.replace(),但我不知道哪些字符是禁止的。所以我的问题:哪些字符是被禁止的,或者是否有一种方法可以用来删除所有禁止的字符?
我使用以下代码获取目录列表
String ROOT_DIR = Environment.getExternalStorageDirectory().getPath();
Run Code Online (Sandbox Code Playgroud)
ROOT_DIR作为字符串传递
public static ArrayList<String> getDirectoryPaths(String directory) {
ArrayList<String> pathArray = new ArrayList<>();
File file = new File(directory);
File[] listfiles = file.listFiles();
if (listfiles != null) {
for (int i = 0; i < listfiles.length; i++) {
if (listfiles[i].isDirectory()) {
pathArray.add(listfiles[i].getAbsolutePath());
}
}
}
return pathArray;
}
Run Code Online (Sandbox Code Playgroud)
`
它返回所有目录路径,但我想获取仅包含图像的图像的目录路径,例如在图库中显示的图像(相机,WhatsAppImages,远足等);我想要所有这些人的道路。
有任何想法吗?