From 76a61c9a82516a5fa98b7857968f1c6df1e481c5 Mon Sep 17 00:00:00 2001 From: smuyyh <352091626@qq.com> Date: Thu, 16 Feb 2017 09:29:18 +0800 Subject: [PATCH] =?UTF-8?q?V=201.3.7=20=E4=BF=AE=E5=A4=8D=E6=8B=8D?= =?UTF-8?q?=E7=85=A7=E5=9C=A8API19=E4=BB=A5=E4=B8=8B=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +-- library/build.gradle | 6 ++-- .../yuyh/library/imgsel/ImgSelFragment.java | 29 ++++++++++++++----- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index ccb2222..bb6178b 100644 --- a/README.md +++ b/README.md @@ -7,13 +7,13 @@ Android 图片选择器。充分自由定制,极大程度简化使用,支持 ## 依赖 ``` dependencies { - compile 'com.yuyh.imgsel:library:1.3.6' + compile 'com.yuyh.imgsel:library:1.3.7' } ``` ## 版本 -**V1.3.6 图片裁剪适配android-7.0** +**V1.3.7 图片裁剪适配android-7.0** ## 注意事项 diff --git a/library/build.gradle b/library/build.gradle index 617de70..26de998 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -1,7 +1,7 @@ apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray' -version = "1.3.6" // 版本号 +version = "1.3.7" // 版本号 android { compileSdkVersion 23 @@ -11,8 +11,8 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 23 - versionCode 14 - versionName "1.3.6" + versionCode 15 + versionName "1.3.7" } buildTypes { release { diff --git a/library/src/main/java/com/yuyh/library/imgsel/ImgSelFragment.java b/library/src/main/java/com/yuyh/library/imgsel/ImgSelFragment.java index a99ea81..d6e87dd 100644 --- a/library/src/main/java/com/yuyh/library/imgsel/ImgSelFragment.java +++ b/library/src/main/java/com/yuyh/library/imgsel/ImgSelFragment.java @@ -5,9 +5,11 @@ import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.database.Cursor; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; +import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.support.annotation.NonNull; @@ -224,10 +226,10 @@ public void onLoadFinished(Loader loader, Cursor data) { if (!hasFolderGened) { File imageFile = new File(path); File folderFile = imageFile.getParentFile(); - if(folderFile==null){ - System.out.println(path); - return; - } + if (folderFile == null) { + System.out.println(path); + return; + } Folder folder = new Folder(); folder.name = folderFile.getName(); folder.path = folderFile.getAbsolutePath(); @@ -292,7 +294,7 @@ public void onChange(int position, Folder folder) { imageList.add(new Image()); imageList.addAll(folder.images); imageListAdapter.notifyDataSetChanged(); - + btnAlbumSelected.setText(folder.name); } } @@ -323,6 +325,7 @@ public void onClick(View v) { } private void showCameraAction() { + if (config.maxNum <= Constant.imageList.size()) { Toast.makeText(getActivity(), String.format(getString(R.string.maxnum), config.maxNum), Toast.LENGTH_SHORT).show(); return; @@ -335,12 +338,24 @@ private void showCameraAction() { } Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + if (cameraIntent.resolveActivity(getActivity().getPackageManager()) != null) { tempFile = new File(FileUtils.createRootPath(getActivity()) + "/" + System.currentTimeMillis() + ".jpg"); LogUtils.e(tempFile.getAbsolutePath()); FileUtils.createFile(tempFile); - cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, FileProvider.getUriForFile(getActivity(), - BuildConfig.APPLICATION_ID + ".provider", tempFile)); //Uri.fromFile(tempFile) + + Uri uri = FileProvider.getUriForFile(getActivity(), + BuildConfig.APPLICATION_ID + ".provider", tempFile); + + List resInfoList = getActivity().getPackageManager() + .queryIntentActivities(cameraIntent, PackageManager.MATCH_DEFAULT_ONLY); + for (ResolveInfo resolveInfo : resInfoList) { + String packageName = resolveInfo.activityInfo.packageName; + getActivity().grantUriPermission(packageName, uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION + | Intent.FLAG_GRANT_READ_URI_PERMISSION); + } + + cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri); //Uri.fromFile(tempFile) startActivityForResult(cameraIntent, REQUEST_CAMERA); } else { Toast.makeText(getActivity(), getString(R.string.open_camera_failure), Toast.LENGTH_SHORT).show();