1.文件管理器的选择 由于本人是一个懒人,而且又不是很喜欢写重复的轮子,更喜欢把人家的轮子拿过来改一波。所以我直接选择Start最高的兄弟的文件管理器.
https://github.com/fishwjy/MultiType-FilePicker 这里其实可以自己写一下可能自己的思路,大致上应该是RecycView去配上查找所有文件然后进行分类的这样的思路,当然这里FilePicker寻找的文件搭配上的Android自带的媒体库,这样就不用那么麻烦了…
2.FilePicker修改文件后不更新 查了很多地方其实都是因为FilePicker是根据Android自带媒体库(数据库)没有更新导致的,所以就算你下载 OR UPLoad文件到你Android设备上也是没有任何改变的,你重启一下之后,就发现啥都有了…神奇~,这是因为Android重启后会自动刷新一次自己的媒体库.
3.手动刷新媒体库 不知道为什么现在的好多好多方法仍然还在发广播,而且也没有出来说一些新的方法,导致这里我卡了挺久的。以前的发广播的方法我就不说了,这里根本就没啥用。 主要还是靠MediaScannerConnection这个类. 可以直接调用MediaScannerConnection.scanFile(context,file,null,null);这个静态方法。当然这里有一个问题,file只是单独一个文件,是否可以是一个目录file? 结果是:可以,但是没那么可以
4.刷新sdcard某一文件类型的媒体库 上面为什么说,只是感觉可以呢?。因为如果是一个目录的file,你新增的文件确实是可以更新到媒体库,但是我突发奇想。用文件管理器去修改文件名是否也会更新 .答案是不会…emmm 0 0,但是如果直接定位到具体的file,那是可以正常更新的… 这就是导致了我们必须要将sdcard里面的文件全部拿出来,然后一个个好好的刷新一遍。 代码很少,注意了~!! FilePicker的加入我就不写了,你们自己弄哈~
List<File> fileList =new ArrayList<>();
List<String> fileStringList = new ArrayList<>();
//扫描所有文件
private void scan(File file,String Extension) {
if (file.isFile()) {
if (file.getPath().substring(file.getPath().length() - Extension.length()).equals(Extension)) //判断扩展名
fileList.add(file);
return;
}
File[] files = file.listFiles();
if (files == null) {
return;
}
for (File f : file.listFiles()) {
scan(f,Extension);
}
}
public void onPickDoc() {
Log.d(TAG, "onPickDoc: "+System.currentTimeMillis());
scan(Environment.getExternalStorageDirectory(),"mp3");
for(File d:fileList){
Log.d(TAG, "onPickDoc: 试一下这个牛逼的循环先"+d.getPath());
fileStringList.add(d.getPath());
}
Log.d(TAG, "onPickDoc: "+System.currentTimeMillis());
String[] cc = new String[fileStringList.size()];
fileStringList.toArray(cc);
for(String d:cc){
Log.d(TAG, "onPickDoc: kkkkkkkkkk_popo4:--->:"+d);
}
MediaScannerConnection.scanFile(this, cc, null, new MediaScannerConnection.OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
Log.d(TAG, "onScanCompleted: ????" +path);
Log.d(TAG, "onScanCompleted: ????" +uri.getPath());
}
});
String[] zips = {"zip", "rar"};
String[] pdfs = {"aac"};
String[] Mp3 = {"mp3"};
int maxCount = MAX_ATTACHMENT_COUNT - photoPaths.size();
if ((docPaths.size() + photoPaths.size()) == MAX_ATTACHMENT_COUNT) {
Toast.makeText(this, "Cannot select more than " + MAX_ATTACHMENT_COUNT + " items",
Toast.LENGTH_SHORT).show();
} else {
for(Uri d:docPaths) {
Log.d("TAG", "onPickDoc: xxxxx" + d.getPath());
}
Log.d("TAG", "onPickDoc: sadfasdfweqrqwerqwer");
FilePickerBuilder.getInstance()
.setMaxCount(1)
.setSelectedFiles(docPaths)
.setActivityTheme(R.style.FilePickerTheme)
.setActivityTitle("Please select doc")
// .setImageSizeLimit(5) //Provide Size in MB
// .setVideoSizeLimit(20)
.addFileSupport("ZIP", zips)
.addFileSupport("AAC", pdfs, R.drawable.pdf_blue)
.addFileSupport("mp3", Mp3, R.drawable.pdf_blue)
.showFolderView(false)
.enableDocSupport(true)
.enableSelectAll(true)
.sortDocumentsBy(SortingTypes.NAME)
.withOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
.pickFile(this);
}
}
好了,运功完毕,如果对你们有用,就希望点个赞吧~祝天下打工崽们头发茂盛茂盛.
|