Android 选择图片、上传图片之PictureSelector

时间:2024-03-28 19:32:27

原作者地址: https://blog.csdn.net/yechaoa/article/details/79291552

 

集成自己项目时会出现如下的问题,特此做下总结。

1.添加依赖

implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.1.0'

 

这里会出现如下问题:

Android 选择图片、上传图片之PictureSelector

解决方法:

在project的build。gradle中allprojects添加:maven { url 'https://jitpack.io' }

如下:

Android 选择图片、上传图片之PictureSelector

 

2.清单文件中权限配置及provider配置

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.CAMERA"/>

 

 

<provider

android:name="android.support.v4.content.FileProvider"

android:authorities="com.example.zb.mypictureselectdemo.provider"

android:exported="false"

android:grantUriPermissions="true">

<meta-data

android:name="android.support.FILE_PROVIDER_PATHS"

android:resource="@xml/file_paths"/>

</provider>

 

如图:

Android 选择图片、上传图片之PictureSelector

 

这里会出现如下问题:

 

Android 选择图片、上传图片之PictureSelector

 

解决方法:

android:authorities="自己项目包名.provider"    即可。

 

 

3.进入相册,选择图片崩死

会出现 java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/animation/AnimatorCompatHelper;

分析:凡是出现android/support/v4/中找不到类或者方法,可以确定是依赖了多个不同版本的support库

这里是recycleview包冲突;

解决方法:

在app的build。gradle中添加

configurations.all {

resolutionStrategy.eachDependency { DependencyResolveDetails details ->

def requested = details.requested

if (requested.group == 'com.android.support') {

if (!requested.name.startsWith("multidex")) {

details.useVersion '26.1.0'

}

}

}

}

 

如下:

Android 选择图片、上传图片之PictureSelector

 

 

4.在fragment中:

将这个放置在Fragment里,添加照片后不会显示图片

PictureSelector.create();调用此方法时,在activity中传activity.this,在fragment中请传fragment.this, 影响回调到哪个地方的onActivityResult()。