[![Travis](https://img.shields.io/badge/ZFile-1.2.1-yellowgreen)](https://github.com/zippo88888888/ZFileManager)
[![Travis](https://img.shields.io/badge/API-19%2B-green)](https://github.com/zippo88888888/ZFileManager)
[![Travis](https://img.shields.io/badge/Apache-2.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
# 特点
### 该项目起源[ZFileManager](https://github.com/zippo88888888/ZFileManager),由于他使用的是kotlin,我翻译成Java,后续加上链式回调和兼容Android 11,在此感谢此作者的开源精神,同时我也把修改后的项目也进行了开源。
### 1. 默认支持 音频,视频,图片,txt,zip,word,excel,ppt,pdf,apk 10种文件
### 2. 支持音频、视频播放,图片查看,zip解压,文件重命名、复制、移动、删除、查看详情
### 3. 支持查看指定文件类型,支持文件类型拓展
### 4. 支持多选,数量、文件大小限制、实时排序、指定文件路径访问
### 5. 支持QQ、微信文件选择(支持自定义获取)
### 6. 兼容 Android 11(这里使用的是StorageAccessFramework,原因是因为使用原来的已经获取不到数据了)
### 部分截图
<div align="left">
<img src = "https://upload-images.jianshu.io/upload_images/2147749-7c5bd57ee9f88c56.gif" width=180 >
</div>
## 基本使用 ([Java使用](https://github.com/zippo88888888/ZFileManager/blob/master/app/src/main/java/com/kathline/demo/JavaSampleActivity.java))
#### Step 0. 添加依赖
```groovy
implementation 'org.dync.kathline:filePicker:1.2.0'
```
#### 注意:兼容Android 11
useSAF默认判断大于Android 11会自动给使用StorageAccessFramework,为了兼容过滤条件新增了一个[MimeType](https://github.com/zippo88888888/ZFileManager/blob/master/app/src/main/java/com/kathline/library/content/MimeType.java)进行过滤SAF打开文件管理器
```java
boolean useSAF = true;
final ZFileConfiguration configuration = new ZFileConfiguration.Build()
.resources(resources)
.useSAF(useSAF)
.fileFilterArray(useSAF ? new String[]{MimeType.TYPE_pdf} : new String[]{ZFileContent.PDF})
```
#### Step 1. 实现ZFileImageListener,并在调用前或Application中初始化
```java
public class MyFileImageListener extends ZFileListener.ZFileImageListener {
/**
* 图片类型加载
*/
@Override
public void loadImage(ImageView imageView, File file) {
Glide.with(imageView.getContext())
.load(file)
.apply(new RequestOptions().placeholder(R.drawable.ic_zfile_other).error(R.drawable.ic_zfile_other))
.into(imageView);
}
}
// 在调用前或Application中初始化
ZFileContent.getZFileHelp().init(new MyFileImageListener());
```
#### Step 2. 在Activity或Fragment中使用
```java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
main_defaultMangerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 打开文件管理
getZFileHelp().start(MainActivity.this, new ProxyListener() {
@Override
public void onResult(int requestCode, int resultCode, Intent data) {
List<ZFileBean> fileList = ZFileManageHelp.getInstance().getSelectData(getBaseContext(), requestCode, resultCode, data);
if (fileList == null || fileList.size() <= 0) {
return;
}
StringBuilder sb = new StringBuilder();
for (ZFileBean bean : fileList) {
sb.append(bean.toString()).append("\n\n");
}
resultTxt.setText(sb.toString());
}
});
}
});
}
}
```
### 文件类型拓展
#### Step 1. 新建一个类:ZFileType,重写里面的openFile()、loadingFile()方法
```java
// 自定义的类型
public static final String APK = "apk";
/**
* 自定义Apk文件类型
*/
public class ApkType extends ZFileType {
/**
* 打开文件
* @param filePath 文件路径
* @param view 当前视图
*/
@Override
public void openFile(String filePath, View view) {
Toast.makeText(view.getContext(), "打开自定义拓展文件", Toast.LENGTH_SHORT).show();
}
/**
* 加载文件
* @param filePath 文件路径
* @param pic 文件展示的图片
*/
@Override
public void loadingFile(String filePath, ImageView pic) {
// 获取PackageManagerAPK的信息
try {
PackageManager packageManager = pic.getContext().getPackageManager();
PackageInfo packageInfo = packageManager
.getPackageArchiveInfo(filePath, PackageManager.GET_ACTIVITIES);
if(packageInfo != null) {
pic.setImageDrawable(packageInfo.applicationInfo.loadIcon(packageManager));
}
} catch (Throwable ignore) {
pic.setImageResource(R.drawable.ic_launcher);
}
}
}
```
#### Step 3. 在调用前或Application中配置
```java
ZFileContent.getZFileHelp().setFileTypeListener(new MyFileTypeListener());
```
### QQ或微信文件选择
> QQ、微信默认根据时间倒序排序,不显示隐藏文件,过滤规则默认,只显示文件,不支持长按操作
其他配置与文件管理保持一致!具体可查看[这里](https://github.com/DyncKathline/FilePicker/blob/master/app/src/main/java/com/kathline/demo/SuperActivity.java)
```java
super_qqTxt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 打开QQ文件选择
ZFileConfiguration zFileConfig = ZFileContent.getZFileConfig();
zFileConfig.setBoxStyle(ZFileConfiguration.STYLE2);
zFileConfig.setFilePath(ZFileConfiguration.QQ);
ZFileContent.getZFileHelp().setConfiguration(zFileConfig).start(this);
}
});
super_wechatTxt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 打开微信文件选择
ZFileConfiguration zFileConfig = ZFileContent.getZFileConfig();
zFileConfig.setBoxStyle(ZFileConfiguration.STYLE2);
zFileConfig.setFilePath(ZFileConfiguration.WECHAT);
ZFileContent.getZFileHelp().setConfiguration(zFileConfig).start(this);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
List<ZFileBean> list = ZFileContent.getZFileHelp().getSelectData(getBaseContext(), requestCode, resultCode, data);
StringBuilder sb = new StringBuilder();
for (ZFileBean bean : list) {
sb.append(bean).append("\n\n");
}
superResultTxt.setText(sb.toString());
}
```
#### 自定义文件获取
```java
/**
* 获取文件
* 此方式,排序、是否显示隐藏文件、过滤规则等等操作都需要自己实现
* 获取配置信息:ZFileManageHelp.getInstance().getConfiguration()
*/
public class MyFileLoadListener implements ZFileLoadListener {
/**
* 获取手机里的文件List
* @param filePath String 指定的文件目录访问,空为SD卡根目录
* @return List<ZFileBean> list
*/
@Override
public List<ZFileBean> getFileList(Context context, String filePath) {
没有合适的资源?快使用搜索试试~ 我知道了~
03.28Android
共170个文件
java:80个
xml:45个
png:27个
需积分: 5 0 下载量 99 浏览量
2022-03-28
23:38:58
上传
评论
收藏 316KB ZIP 举报
温馨提示
03.28Android
资源详情
资源评论
资源推荐
收起资源包目录
03.28Android (170个子文件)
gradlew.bat 2KB
.gitignore 208B
.gitignore 6B
.gitignore 6B
mavencentral.gradle 6KB
bintray.gradle 3KB
build.gradle 2KB
build.gradle 1KB
build.gradle 656B
settings.gradle 68B
gradlew 5KB
gradle-wrapper.jar 53KB
ZFileListActivity.java 23KB
PermissionUtil.java 19KB
ZFileConfiguration.java 17KB
ZFileManageHelp.java 16KB
ZFileListener.java 15KB
ZFileUtil.java 13KB
ZFileContent.java 12KB
UriUtils.java 11KB
ZFileListAdapter.java 10KB
SuperActivity.java 10KB
ZFileVideoPlayer.java 9KB
ZFileAudioPlayDialog.java 9KB
SystemMediaPlayer.java 8KB
ZFileQWActivity.java 8KB
ZFileSelectFolderDialog.java 8KB
ZFileInfoDialog.java 8KB
MimeType.java 8KB
ZipUtils.java 8KB
MyQWFileListener.java 7KB
ScaleTextureView.java 6KB
ZFileSortDialog.java 5KB
ZFileDefaultLoadListener.java 5KB
ZFileQWFragment.java 5KB
ZFileRenameDialog.java 4KB
ZFileBean.java 4KB
ZFileAdapter.java 4KB
ZFileAsyncImpl.java 4KB
ZFileCommonDialog.java 4KB
JavaSampleActivity.java 3KB
SuperDialog.java 3KB
MainActivity.java 3KB
ProxyFragment.java 3KB
ZFileQWAsync.java 3KB
ZFileOtherUtil.java 3KB
ZFileOpenUtil.java 3KB
ZFileViewHolder.java 3KB
IMediaPlayer.java 3KB
BlankFragment.java 2KB
ZFileAsync.java 2KB
SuperAdapter.java 2KB
ZFileQWFilter.java 2KB
ZFileManageDialog.java 2KB
ZFileVideoPlayActivity.java 2KB
ZFileTypeManage.java 2KB
ZFileThread.java 2KB
BaseMediaPlayer.java 2KB
ZFileFilter.java 1KB
ZFileLog.java 1KB
ApkType.java 1KB
ZFilePicActivity.java 1KB
ZFileInfoBean.java 1004B
ZFileFragment.java 933B
ZFileType.java 924B
ZFilePathAdapter.java 917B
ZFilePathBean.java 779B
ZFileHelp.java 774B
OtherType.java 720B
AudioType.java 718B
ZFileActivity.java 680B
MyFileImageListener.java 670B
MyFileTypeListener.java 661B
ZipType.java 636B
XlsType.java 634B
WordType.java 631B
TxtType.java 627B
PptType.java 627B
PdfType.java 627B
ZFileQWBean.java 600B
ImageType.java 583B
VideoType.java 582B
FragmentSampleActivity.java 564B
App.java 441B
MyTxtType.java 359B
Function.java 172B
ProxyListener.java 166B
Function3.java 113B
Content.java 108B
FileProvider.java 104B
Function2.java 100B
Function1.java 83B
README.md 11KB
ic_launcher_round.png 15KB
ic_launcher_round.png 10KB
ic_launcher.png 9KB
ic_launcher_round.png 7KB
ic_launcher.png 6KB
ic_launcher_round.png 5KB
ic_zfile_word.png 5KB
共 170 条
- 1
- 2
修敏
- 粉丝: 0
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0