废话少说, 先看截图
代码
AndroidFilePicker 代码地址
GitHub: https://github.com/rosuH/AndroidFilePicker
Gitee: https://gitee.com/chen3441251/AndroidFilePicker
// gradle
implementation 'me.rosuh:AndroidFilePicker:0.6.2'
// 权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
// Android9和Android10需要在application标签中添加如下属性
android:requestLegacyExternalStorage="true"
// 启动选择器
FilePickerManager.INSTANCE
.from(MainActivity.this)
.forResult(FilePickerManager.REQUEST_CODE);
// 接收返回数据
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 按了返回键
if (resultCode == Activity.RESULT_CANCELED) {
return;
}
// 接收返回的文件
if (requestCode == FilePickerManager.REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
List<String> fileList = FilePickerManager.INSTANCE.obtainData();
if (fileList != null && fileList.size() > 0) {
for (String item : fileList) {
Log.d("------>>", "文件路径: " + item);
}
}else {
Toast.makeText(MainActivity.this, "没有选择任何东西~", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(MainActivity.this, "没有选择任何东西~", Toast.LENGTH_SHORT).show();
}
}
}
// 混淆规则(0.5.1 及以前版本)
-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}
-keepnames class kotlinx.coroutines.android.AndroidExceptionPreHandler {}
-keepnames class kotlinx.coroutines.android.AndroidDispatcherFactory {}
-keepclassmembernames class kotlinx.** {
volatile <fields>;
}