设置了拍完照照片的存放路径takePhoto,在此情况下,部分机型的onActivityResult()中不会返回数据,即data.getData()为空,因为可以根据存放路径即可获取拍照图片。...(requestCode, resultCode, data); } 因为在本activity中可能启动三个新的activity,即拍照activity,相册activity,裁剪activity...return-data", false); startActivityForResult(intent, RESULT_REQUEST_CODE); } //Android 4.4后通过...Uri获取路径以及文件名一种方法 public static String getRealPathFromURI(final Context context, final Uri uri ) {...cursor.close(); } } return data; } // 专为Android4.4设计的从Uri获取文件绝对路径
自Android 7.0后系统禁止应用向外部公开file://URI , * 因此需要FileProvider来向外界传递URI,传递的形式是content : //Uri,使用时需要在清单文件中注册。...下面创建一个xml文件夹,xml下面建立file_paths.xml文件,这个文件的主要作用是向外提供content://uri路径。...照片"+resultCode+data+requestCode); if (resultCode == Activity.RESULT_OK) { 方式一:自定义路径中获取图片 img_show.setImageURI...插入图库的方法图片并没有立刻显示在图库中,而我们需要立刻更新系统图库以便让用户可以立刻查看到这张图片。...//Uri uri = data.getData(); //Cursor cursor =getActivity().getContentResolver().query(uri, null, null
零、前言 本篇将涉及: 1.调用系统相机、上传到服务器操作 2.大照片通过采样并压缩尺寸避免OOM 3.media中图片的内容提供者使用方法,增删改查,获取手机所有图片路径 4.显示最近100...张照片 5.通过系统图库选择一张加载到界面 ---- 实验一:拍一张图片上传到服务器: 1.打开系统系统相机 // 注:Cons.CAMERA_RESULT = 1 startActivityForResult...data); if (resultCode == RESULT_OK) { //通过intent获取Bundle中的"data"键的数据(即Bitmap) Bitmap...传说中的OOM.png 1.采样后适量缩小,解决OOM:思路 1)创建Options对象op,对Bitmap做配置 2)只获取Bitmap信息,不分配内存:op.inJustDecodeBounds...,方法耗时:1.289秒,属于耗时操作应该放在子线程 可以获取数据库中的字段,封装一个图片的实体类,以便使用 private ArrayList queryAllImg() {
SD 卡动态权限 | 跳转到相册界面选择图片 | 使用 OkHttp 上传图片文件 ) ---- 文章目录 OkHttp 系列文章目录 前言 一、获取 SD 卡动态权限 二、跳转到相册界面 三、选择完相册图片后回到本界面...一、获取 SD 卡动态权限 ---- 在清单文件中 , 注册如下权限 ; 文件路径 ; 文件路径所在的字段是 MediaStore.Images.Media.DATA 字段 , 列明为 _data ; // 要查询的列字段名称 String[] filePathColumns...; // 获取图片的存储路径 String filePath = cursor.getString(columnIndex); // 获取数据完毕后, 关闭游标 cursor.close(); ④...最后 , 使用 OkHttp 上传获取的图片对应的文件路径 ; 完整代码示例 : /** * 在相册中选择图片返回 * @param requestCode * @
概述 通过ContentProvider初探相信你已经知道如何去使用系统提供的ContentProvider或者自定义ContentProvider了, 已经基本满足日常开发的需求了,有趣的是,我在官方文档上看到了另外这几个...在一个document provider 中是以传统的文件目录树组织起来的: ?...简单点说就是:客户端发送了上面两种Action的Intent后,会打开Picker UI,在这里会显示相关可用的 Document Provider,供用户选择,用户选择后可以获得文件的相关信息!...()中获取被创建文件的uri 删除文件: 前提是Document.COLUMN_FLAGS包含SUPPORTS_DELETE DocumentsContract.deleteDocument(getContentResolver...如果是以前的版本:uri可能是这样的: content://media/external/images/media/image%3A69983 别人总结的Android4.4中获取资源路径问题 public
实际效果图: 代码实现: 权限配置 点击事件绑定 相册访问 根据路径设置图片 其他方法 权限 首先,现在 mainfest.xml 文件中添加以下权限: <uses-permission android...(requestCode, resultCode, data); //在相册里面选择好相片之后调回到现在的这个activity中 switch (requestCode) {...().query(selectedImage, filePathColumn, null, null, null);//从系统表中查询指定Uri对应的照片...e.printStackTrace(); } } break; } } 在这里通过放回路径设置头像...Uri和selection来获取真实图片路径 Cursor cursor = getContentResolver().query(uri, null, selection, null,
最近在项目开发中,需要使用WebView上传文件。默认情况下情况下,使用Android的WebView是不能够支持上传文件的。...在Android 5.0之后,系统提供了onShowFileChooser来让我们实现选择文件的方法,仍然有ValueCallback,在FileChooserParams参数中,同样包括acceptType...处理选择的文件 因为我们前面是使用startActivityForResult来打开的选择页面,我们会在onActivityResult中接收到选择的结果。...2 选择文件会使用系统提供的组件或者其他支持的app,返回的uri有的直接是文件的url,有的是contentprovider的uri,因此我们需要统一处理一下,转成文件的uri,可参考以下代码(获取文件的路径...下面我们将介绍怎么通过使用腾讯X5 Webview浏览器实现拍照或从相册上传图片功能。
如 例如,如果你在应用中构建一个名为DownloadService的服务,用于从Web下载文件,可以使用以下代码启动: // Executed in an Activity, so 'this' is...例如,如需在地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用共享内容 例如,如果希望与其他人共享的内容,可以使用 ACTION_SEND 操作创建 Intent,并添加指定要共享的内容...onActivityResult()中,基于onActivityResulty()中具体的实现产生具体攻击。...用于获取用户选择的文件(文档、图象、视频)的URI,并在应用中进行处理(例如,将文件发送到服务器中),大多Android/Java无法将Android ContentResolver返回的InputSteam...所以应用在处理文件之前会把URI缓存到文件中。这可能导致读取/写入任意文件。
图片的选择 这两天做头像模块的时候,使用到了相册,相机,剪裁,自定义圆形图片;这里做个总结吧 这里关于权限的处理 之前已经做过总结了,就不再写了 https://sky-mxc.github.io/2016.../10/08/permission 相册选取 相机选取 剪裁 自定义圆形图片 相册选取 图库选取之后获得的是这个图片的路径, 我的实现方法是通过ContentResovler来获取路径,存储在文件夹里,...存储并启动剪裁 ,存储文件的代码就不贴了,都是那一套 String projection = MediaStore.Images.Media.DATA; Cursor cursor = getContentResolver...传入一个文件uri(和刚才相册临时存储的文件路径一致,方便使用),在拍照完毕,直接去读取该图片 并执行剪裁 /** * 执行拍照 */ private void invokeCamera() {...",true); intent.putExtra("noFaceDetection",true); startActivityForResult(intent,ZOOM); } 剪裁后获取
之前在工作的过程中,遇到不同 Android 版本下 URI 采用不同方式来获取文件路径的问题。 因为需求的原因,要求拍照上传或者从相册中选择图片上传,而且图片是需要经过压缩的,大小不能超过2M。...(int requestCode, int resultCode, Intent data) 中获取到 URI 。...最关键的来了,如果通过 URI 来获取文件呢?...比如,现在 URI 为 content://media/extenral/images/media/17766 ,而我们需要得到对应的文件路径。...这是因为在 Android 4.4 及以上的机型,使用了 DocumentUri 来代表获取到文件的 URI 。 所以我们又要对于 DocumentUri 进行适配。
主要思路是重写WebChromeClient,然后在WebViewActivity中接收选择到的文件Uri,传给页面去上传就可以了。...return true; } } 上面openFileChooser是系统未暴露的接口,因此不需要加Override的注解,同时不同版本有不同的参数,其中的参数,第一个ValueCallback用于我们在选择完文件后...在Android 5.0之后,系统提供了onShowFileChooser来让我们实现选择文件的方法,仍然有ValueCallback,在FileChooserParams参数中,同样包括acceptType...因为我们前面是使用startActivityForResult来打开的选择页面,我们会在onActivityResult中接收到选择的结果。...选择文件会使用系统提供的组件或者其他支持的app,返回的uri有的直接是文件的url,有的是contentprovider的uri,因此我们需要统一处理一下,转成文件的uri,可参考以下代码(获取文件的路径
intent中提供一系列的putExtra()方法的重载,可以把想要传递的数据暂存在intent中, 当另一个活动启动后,再把这些数据从intent缓存中取出即可。...相机拍摄到的图片会直接存储到相应路径,不会缓存在内存中。...intent.setType(“audio/*”); //选择音频 intent.setType(“video/*”); //选择视频 //这是正常的访问系统自带的文件管理器。...(java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数, 而通过这个首地址就可以找到该对象,进而可以找到该对象的各个属性...Uri 和 selection 来获取真实的图片路径 Cursor cursor = getContentResolver().query(uri, null, selection, null, null
因此决定增加用户自行导入字体的功能,由用户来决定使用什么字体。 原来的字体文件是放在asset中。Typeface.createFromAsset直接引入并使用。...用户自行选择将字体文件复制到App内部存储路径。 使用字体时,再用Typeface.createFromFile()获取Typeface。...选择文件 调用系统文件选择器 private static final int REQ_CODE_CHOOSE_FILE = 10; // 启动选择文件....... // 处理选择的文件 @Override protected void onActivityResult(int requestCode, int resultCode,...用户输出图片文件后,打开微信想发送这张图片。
final static int CAMERA_REQUEST_CODE = 0; // 相册选择回传吗 public final static int GALLERY_REQUEST_CODE...= 1; 若多个地方使用了这个拍照功能 可以放在公共类中,设置为全局变量 3 在相应的java类中: // 拍照的照片的存储位置 private String mTempPhotoPath....getPackageName() +".my.provider", new File(mTempPhotoPath)); //下面这句指定调用相机拍照后的照片存储的路径...imageUri)); fragment4ImageView0.setImageBitmap(bit); 解决: 先检查右边,是否为空的 还是不行 检查左边 是否有findViewById 如果是在onActivityResult...中设置的setImage 即使在onCreate中findView 了也是不行的 要在onActivityResult中findView 问题2: 拍照 Android N 版本遇到的问题: android.os.FileUriExposedException
一.获得图片路径 当我们通过Intent打开相册,获取图片后,在onActivityResult回调中会得到图片的Uri。 但是Uri无法直接获得图片的路径。...; Cursor cursor = getContentResolver().query(uri, null, selection, null, null); if (cursor !...由于需要进行文件的读取操作,所以需要获取相关权限。...然后在java文件中,我们首先需要检测是否获得了权限,如果没有,再请求。...中可以获得结果。
通过调用系统Action,从图库中选择图片,并展示到界面上 2....API19前后获取相册图片路径 详见(仅客户端代码),请移步:本人GITHUB Intent intent = new Intent(); // Set an explicit MIME data...(requestCode, resultCode, data); } /** * API19以下获取图片路径的方法 * @param uri */...private String getFilePath_below19(Uri uri) { //这里开始的第二部分,获取图片的路径:低版本的是没问题的,但是sdk>19会获取不到...().query(uri, proj, null, null, null); //获得用户选择的图片的索引值 int column_index = cursor.getColumnIndexOrThrow
主要内容如下 - 怎样通过相机获取我们的图片 - 怎样启动相册获取我们想要的图片 - 在Android 6.0中的动态权限处理】 - 调用系统Intent和自定义相册的优缺点对比 怎样通过相机获取我们的图片...private void startCameraWithHighBitmap() { //确定存储拍照得到的图片文件路径 if (Environment.getExternalStorageState...Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); //加载Uri型的文件路径...bitmap是被缩放的bitmap,第二种方法获取的bitmap是完整的bitmap,实际使用中根据需求情况决定使用哪一种方法。...imagePath = c.getString(columnIndex); c.close(); } else if ("file".equals(scheme)) {//小米4选择云相册中的图片是根据此方法获得路径
实际效果: 布局文件: <?xml version="1.0" encoding="utf-8"?..., data); //在相册里面选择好相片之后调回到现在的这个activity中 switch (requestCode) { case IMAGE_REQUEST_CODE...().query(selectedImage, filePathColumn, null, null, null);//从系统表中查询指定...uri,null); }else if ("file".equalsIgnoreCase(uri.getScheme())){ //如果file类型位uri直街获取图片路径即可...Uri和selection来获取真实图片路径 Cursor cursor = getContentResolver().query(uri, null, selection, null,
vFile.exists()) {//必须确保文件夹路径存在,否则拍照后无法完成回调 File vDirPath = vFile.getParentFile(); vDirPath.mkdirs...onActivityResult 方法中识别出是执行了拍照选取的流程。..."), FILECHOOSER_RESULTCODE ); } FILECHOOSER_RESULTCODE 用于在onActivityResult方法中识别出是执行了从已保存文件中选取图片文件的流程...) {//从文件选择器选择照片 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if(null == vCbFileChooser.../** * 解决拍照后在相册中找不到的问题 */ private void addImageGallery(String path) { if (null == path || "".equals
在Android中URI的格式如下图所示: ? A:schema,已经由Android所规定为:content://..../# 匹配table3的所有行 MIME MIME是指定某个扩展名的文件用一种应用程序来打开,就像你用浏览器查看PDF格式的文件,浏览器会选择合适的应用来打开一样。...Android中类型已经固定好了,不能更改,只能区别是集合还是单条具体记录,子类型可以按照格式自己填写。 在使用Intent时,会用到MIME,根据Mimetype打开符合条件的活动。...) 供外部应用从ContentProvider中获取数据。...如果你需要获取一个特定的记录,你就必须知道当前记录的ID,也就是URI中D部分。