特色

github:github.com/DyncKathlin…

该项目起源ZFileManager,由于他运用的是kotlin,我翻译成Java,后续加上链式回调和兼容Android 11giti,在此感谢此作者的开源精力,同时我也把修改后的项目也进行了开源。

1. 默许支撑线程池原理 音频,视频,图片,txjava模拟器t,zip,woKotlinrd,excel,ppt,pdf,apk 10种文件

2. 支撑音频、视频播映,图片检查,zip解压,文件重命名、拷贝、移动、删去、检查概略

3. 支撑检查指定文件类型,支撑文件类型拓宽

4. 支撑多选,数量、文件大小约束、实时排序、指定文件途径访问

5. 支撑QQ、微信文件挑选(支撑自定义获取)

6. 兼容 Android 11(这儿运用的是StorageAccessFramework,原因是因为运用本来的现已获取不java模拟器到数据了)

部分截图

Android 文件管理器

根本运用 (Java运androidstudio装置教程用)

Step 0. 增加依托

implementation 'org.dync.kathline:filePicker:1.2.3'

留神:兼容Android 11

useSAF默许判别大于Android 11会主动给运用Storandroid平板电脑价格ageAccessFramekotlin实战work,为了兼容过滤条件新增了一个MimeType进行过滤SAF翻开文件处理器


boolean usejava面试题SAF = true;
final ZFileConfiguration configuration = new ZFileConfiguratiandroid什么意思on.Build()
.resources(resources)
.useSAF(useSAF)
.fileFilterArray(useSAF ? new String[]{MimeType.TYPEandroid体系_pdf} : new String[]{ZFileContent.PDF})

Step 1. 完kotlin和java成ZFileImageListener,并在调用前或Application中初始化


publgiti轮胎ic class MyFileImageListener extends ZFileListeneandroid的drawable类r.ZFileImageListener {
/**
* 图片git指令类型加载
*/
@Override
public void loadImage(ImageView imageView, File file) {
Glide.with(imageView.getContext())
.load(file)
.apply(new RequestOptions().p线程池创立的四种laceholder(R.drawable.线程池创立的四种ic_zfile_other).error(R.drawable.ic_zfile_other))
.into(imageView);
}
}
// 在调用前或Applicationkotlin面试题中初始化 
ZFileContent.getZgithubFileHelp().init(new MyFileImageListener());

Step 2. 在Activity或Fragment中运用

publicgiti轮胎 class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main)Kotlin;
main_defaultMangerBtn.setOnClickListener(new View.OnClickListengiti轮胎er() {
@Overridjava难学吗e
public void onClick(View v) {
// 翻开文件处github
getZFileHelp().start(MainActivity.this,java开发 new ProxyListener() {
@Override
public void onReandroid下载sult(int requestCode, int resultCode, Int线程撕裂者ent data) {
List<ZFileBean> fileList = ZFileManageHelp.getInstance().getSelectData(线程getBaseContext(), requestCode, resultCode, data);
if (fileList == null || fileList.size() <= 0) {
return;
}
StringBuilder sb = negiti轮胎w StringBuilder();
for (ZFileBean bean : fileList) {
sb.append(be线程池的七个参数an.toString()).append("nn");
}
resultTxt.setText(sb.toString());
}
});
}
});
}
}

文件类型拓宽

Step 1. 新建一个类:ZFileType,重写里面的openFile()、loadingFile()办法


// 自定义的类型
public statiAndroidc finalandroid手机 String APK = "apkgithub中文官网网页";
/**
* 自定义Apk文件类型
*/
public clakotlin极简教程ss ApkType extends ZFileType {
/**
* 翻开文件
* @param filePath  文件途径
* @param view      当时视图
*/
@OvGiterrgitlabide
public void openFile(String filePath, View view) {
Toast.makeText(view.getContext(), "翻开自定义拓宽文件", ToastAndroid.LENGTH_SHORT).sgithub是干什么的how();
}
/**
* 加载文件
* @param filePath 文件途径
* @param pic      文件展示的图片
*/
@Override
public void loadingFile(Stjava初学rkotlin下载ing filePath, ImageView pic) {
// 获取Packageandroid什么意思ManagerAPK的信息
try {
PackageManager packageManager = pic.getContext().getPackageManager();
PackageInfo packageInfo = p线程池原理ackageManager
.getPackag线程池原理eA线程的几种状态rchiveInfo(filePath, PackageManager.GET_ACTIVITIES);
if(packageInfkotlin下载o != null) {
picjava难学吗.setImageDgitlabrawable(packageInfo.applicationInfo.loadIcon(packageManager));
}
}kotlin言语 catch (Throwable ignorekotlin教程) {
pic.setImageResource(R.drawable.ic_launcher);
}
}
}

Step 3. 在调用前或Application中装备


ZF线程池创立的四种ileContent.getZFileHelp().setFileTypeListener(new MyFileTypeListener());

QQ或微信文java怎样读件挑选

QQ、微信默许根据时刻倒序排序,不闪现躲藏文件,过滤规矩默许,只闪现文件,不支撑长按操作

其他装备与文件处理保持一致!详细Kotlin可检查这儿


super_qqTxt.setOnClickListener(new View.Oandroid开发nC线程和进程的差异是什么lickListekotlin和javaner() {
@Override
publgit指令ic void onClick(View v) {
//Kotlin 翻开QQ文件挑选
ZFileConfiguration zFi线程撕裂者leConfig = ZFileContent.getZFileConfig();
zFileConfig.setBoxStyle(ZFileConfiguration.STYLE2);
zFileConfig.setFilePath(ZFileConfiguration.QQ);
ZFileContent.gandroid手机etZFiljava模拟器eHelgitip().setCon线程池原理figuration(zkotlin言语FileConfig).start(this);
}
});
super_wekotlin是什么意思chatTxt.setOnClickListener(java面试题new Viewgitee.OnClickListener() {
@Override
public void onClick(ViewJava v) {
// 翻开微信Android文件挑选
ZFileConfiguration zFileConfig = ZFileContenKotlint.getZFileConfig(Java);
zFileConfig.setBoxStyle(ZFileConfiguration.STYLE2)java面试题;
zFileConfig.setFilePath(ZFilegithubConfiguration.WECHAT);
ZFileContent.getZFileHelp().setConfiguration(zFileConfig).start(this);
}
});
@Override
protected void onActivityRegithub中文官网网页sult(int requestCode, int resultCodandroid平板电脑价格e, @Nullable Intent data) {
super.onActJavaivityResult(requestCodgit教程e, resultCode, data);
List<ZFileBean> list = ZFileContent.getZFileHelp().getSelectDatkotlin下载a(getBaseContext(), requestCode, resultCo线程池de, data);
StringBuilder sb = new StringBuilder();
for (ZFileBean bean : list) {
sb.append(bean).append("nn");
}
superResultTxt.setText(sb.toString());kotlin面试题
}

自定义文件获取


/**
* 获取文件
* 此办法,排序、是否闪现躲藏android下载文件、过滤规矩等等操作都需求自己完成
* 获取装备信息:ZFileManageHelp.getInstance().getConfigurgiteeation()
*/
public class MyFileLoadListener implements ZFileLoadListener {
/**
* 获取手机里的文件List
* @pjavascriptaram filePath String          指定的文件目录访问,空为SD卡根目录
* @return List&android手机lt;线程撕裂者ZFileBean>         list
*/
@Override
public List<ZgitiFileBean> getFileList(Context context, String filePath) {
return getFileList(context, filePath);
}
pjava面试题rivkotlin是什么意思ate List<ZFileBe线程池an> getFileList(Context context, String filePath) {
return null;
}
}
// 在调用前或Application中线程池创立的四种装备
ZFileConten线程撕裂者t.getZFileHelp().setFileLoadListener(new MyFileLoadListener());

自定义翻开默许支撑的文件


public class MyFileOpenListener extends ZFigithub永久回家地址leOpenListener {
@Override public void openA线程安全udio(String filePath, View view) {} // 音频
@Override public void openImage(String filePath, View view) {} // 图片
@Overrkotlin极简教程ide public void openVikotlin教程deo(String fkotlin实战ilePath, View view) {} // 视频
@Override public void openTXT(String filePatkotlin为什么盛行不起来h, View view) {} /线程池的七个参数/ 文本
@Override public void openZIP(String filePath, View view) {} // zip压缩包
@Override public void openDOC(String filePath, View viekotlin言语w) {git教程} // word
@Override public void openXLS(String filePath, View view) {} // xls
@Override public void openPPT(String filePath, View view) {} // ppt
@Override public void openPDF(Strgiti轮胎ing filePath, View view) {} // pdf
@Override public void openOther(String filePath, View vijava模拟器ew) {} // 其他文件
}
// 在调用前或Application中装备
Zandroid的drawable类FileContent.getZFileHelp().setFileOandroid平板电脑价格penListener(new MyFileOpenLgiteeistener());

自定义文件操作


public class MyFileOperateListener extenandroid是什么手机牌子ds ZFileOperateListener {
/**
* 文件重命名
* @param filePath String   文件途径
* @param context Context   Context
* @param block (boolean:成功或失利;String:新名字)
*/
public void renameFiandroidstudio装置教程le(final String filePath, final Context context,
final Functikotlin为什么盛行不起来on3 block) {
// 先弹出重命android平板电脑价格名Dialog,再实施重命名办法  
}
/**
* 拷贝文kotlin教程件 耗时操作,主java言语张放在非UI线程中实施
* @param sourceFile Strkotlin为什么盛行不起来ing     源文件地址
* @param targetFile String     目标文件地址
* @param context Conte线程池的七个参数xt       Conte线程和进程的差异是什么xt
* @param block                 文件操作成功或失利后的javascript监听
*/
public void copyFile(String sourceFile, String targetFile, Context context, Function2 block) {
ZFileUtil.copyFile(sourckotlin为什么盛行不起来eFile, targetandroid下载File, context, block);
}
/**
* 移动文件 耗时操作,建议放在非UI线程中实施
*/
public void moveFile(String sourceFiandroid体系le, String targetFile,线程的几种状态 Context contegitixt, Fuandroid平板电脑价格nction2 block) {
}
/**
* 删去文件 耗时操作,建议放在非UIkotlin极简教程线Java程中实施
*/
public void deleteFile(final String filePath, final Context congithub永久回家地址text, final Function2 block) {
}线程
/**
* 解压文件 耗kotlin教程时操作,建议放在非UI线程中实施
*/
public void zipFile(String sourceFile, String targetFile, Context contegithub永久回家地址xt, Function2 block) {
}
/**
* 文件概略
*/
public void fileInfo(ZFileBean bean, Context cojava初学ntext) {
}
}
// 在调用前或Applicatio线程池原理n中装备
ZFileContent.getZFileHelp().setFileOperateListener(new MyFileOjava言语perateListener());
更多操作请检查demo, ^_^ 假设觉得能够线程和进程的差异是什么 star 一下哦