Android写一个文件管理器app
时间: 2023-12-27 08:04:21 浏览: 25
好的,先简单介绍一下文件管理器的功能:
文件管理器是一款可以浏览、查看、复制、移动、重命名、删除等操作文件的应用程序。在Android平台上,可以通过系统提供的File类来实现对文件的操作。下面是一个简单的文件管理器的实现:
1.创建一个新的Android项目,命名为FileExplorer。
2.在布局文件中添加一个ListView控件:
```
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
```
3.在MainActivity中获取ListView控件并设置适配器:
```
public class MainActivity extends AppCompatActivity {
private ListView listView;
private ArrayAdapter<String> adapter;
private File currentDir;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.list_view);
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);
listView.setAdapter(adapter);
currentDir = Environment.getExternalStorageDirectory();
refreshFileList(currentDir);
}
private void refreshFileList(File file) {
currentDir = file;
setTitle(currentDir.getAbsolutePath());
File[] files = currentDir.listFiles();
if (files != null) {
adapter.clear();
for (File f : files) {
adapter.add(f.getName());
}
}
}
}
```
4.在ListView中添加item的点击事件,点击文件夹进入下一级目录,点击文件打开文件:
```
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String fileName = adapter.getItem(position);
File file = new File(currentDir, fileName);
if (file.isDirectory()) {
refreshFileList(file);
} else {
openFile(file);
}
}
});
private void openFile(File file) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".fileprovider", file);
String mimeType = getMimeType(file);
intent.setDataAndType(uri, mimeType);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Intent chooser = Intent.createChooser(intent, "Open File");
startActivity(chooser);
}
private String getMimeType(File file) {
String extension = MimeTypeMap.getFileExtensionFromUrl(file.getAbsolutePath());
return MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
}
```
5.在AndroidManifest.xml中添加FileProvider:
```
<application>
...
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
</application>
```
6.在res/xml目录下创建provider_paths文件,指定共享哪些目录:
```
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
```
到这里,一个简单的文件管理器就完成了。当然,还有很多细节需要处理,比如权限申请、文件复制、移动、重命名、删除等操作。