我知道这是一个老旧的,但我似乎没有找到一种方法来管理它...
我必须捕获一个相机图像,以供以后的IO处理,将其传输到一个网络共享,但在此之前我失败了很多...在阅读了一些文章之后,我找到了在KitKat上实际执行的方法,检查运行的SDK,并且它工作了…但是,现在我也在牛轧糖设备上测试它。
对于牛轧糖,我已经读到应该使用提供程序,并且我正在尝试...
捕获的映像必须存储在一个特定的文件夹中,该文件夹为
“/storage/emulated/0/insulinpower/amsigntool/data”
以供以后的IO处理...所以我认为必须使用类似的东西,当前没有查看。
我查看了所有“区域”的提供程序定义,但无法得到我需要的答案,而且我得到了更多的例外情况。在定义检索URI时,我得到
java.lang.Reflect.InvocationTargetException
java.lang.IllegalArgumentException:在file_paths中找不到包含/storage/emulated/0/insulinpower/amsigntool/data/xcamx-201805171828082115829615.jpg的配置根。但它只有在我引用外部路径文件而不是外部路径文件的情况下才起作用,而外部路径文件似乎正是我需要的。外部路径代码很简单。
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (cameraIntent.resolveActivity(getPackageManager()) != null) {
File pictureFile = null;
try {
pictureFile = GENERIC.amPictureFile(this);
} catch (IOException ex) {
// Error occurred while creating the File
Toast.makeText(this, "Create file failed!", Toast.LENGTH_SHORT).show();
}
if (pictureFile != null) {
//https://stackoverflow.com/questions/40087944/content-uri-crashes-camera-on-android-kitkat
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT){
this.imageToUploadUri = Uri.fromFile(pictureFile);
} else {
this.imageToUploadUri = FileProvider.getUriForFile(this,"com.insulinpower.android.fileprovider", pictureFile); // <-- THIS statement crashes with the indicated exception
}
//\ https://stackoverflow.com/questions/40087944/content-uri-crashes-camera-on-android-kitkat
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageToUploadUri);
startActivityForResult(cameraIntent, REQUEST_IMAGE_CAPTURE);
}
// file_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Share folder under public external storage folder.The base folder is Environment.getExternalStorageDirectory()-->
<!--external-path name="my_data" path="InsulinPower/amSignTool/Data/" /> -->
<external-files-path name="my_data" path="/InsulinPower/amSignTool/Data/" />
<!-- external-files-path name="my_data" path="InsulinPower/amSignTool/Data/" / -->
<!-- external-files-path name="my_data" path="/" /-->
</paths>
// manifest
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.insulinpower.android.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
File storageDir=新文件(Environment.GetExternalStorageDirectory(),“”);
返回“/storage/emulated/0”//有效,添加/insulinPower/AmSignTool/data后缀以转到正确的文件夹...
File File=this.getExternalFilesDir(null);
返回“/storage/emulated/0/android/data/com.insulinpower.amsigntool/files”//对我无效
如果能理解我的错误,请给予任何提示,并请原谅我的英语太差。
TIA
Andrea
捕获的映像必须存储在特定文件夹中,该文件夹为“/storage/emulated/0/insulinpower/amsigntool/data”
即新文件(environment.getExternalStorageDirectory(),“insulinpower/amsigntool/data”)
。
但只有当我引用外部路径文件而不是外部路径文件时,它才起作用,而外部路径文件似乎确实是我需要的
正确。尝试:
<external-path name="my_data" path="/InsulinPower/amSignTool/Data/" />
如果要将文件放在何处,您肯定需要
,而不是
。
您还需要:
cameraIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
在开始活动之前。否则,相机应用程序无权写入此位置。
我尝试使用以下方法从URI获取路径: 当我尝试压缩位图时: 我得到这个错误:
通常,从图库中选择一个视频并用库剪切,问题是我需要将剪切的视频(它存储在外部存储器:/storage/emulated/0/test_video.mp4中)转换为base64,这就是它失败的地方。我该怎么解决呢?我已经将权限放在清单上,并以编程方式请求这些权限。 而我在logcast中得到的只有:
可以帮助任何人回答这个(我认为很简单)问题吗?我是Android系统的纽比。谢谢你!
你好,我试图保存图片从网址在我的应用程序,但当我试图访问内存放置数据,一个错误出来 无法解码流java.io.FileNotFoundException/storage/emulated/0打开失败:enoint(没有这样的文件或目录) 这是我的DownloadManager课程 这是我的下载请求类: 这是我的G班:
问题内容: 我正在尝试使用android中的异步任务下载和存储图像,当单击下载按钮时出现以下错误。 WallpaperActivity.java Android目标Api 7.1.1 清单中添加的权限 android.permission.READ_EXTERNAL_STORAGE android.permission.WRITE_EXTERNAL_STORAGE 问题答案: 您需要为OS Mar
我正试图在android中使用异步任务下载和存储图像,当点击下载按钮时得到以下错误。 null Android.permission.write_external_storage