保存文件所需的Android权限是WRITE_EXTERNAL_STORAGE。
以下是一个保存文件的代码示例:
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;
import android.widget.Toast;
import androidx.core.app.ActivityCompat;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileUtil {
private static final int REQUEST_PERMISSION_CODE = 200;
public static void saveFile(Context context, String fileName, String content) {
if (hasWritePermission(context)) {
saveInternalFile(context, fileName, content);
} else {
requestWritePermission(context, fileName, content);
}
}
private static boolean hasWritePermission(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return ActivityCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
} else {
return true;
}
}
private static void requestWritePermission(Context context, String fileName, String content) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION_CODE);
}
}
public static void onRequestPermissionsResult(Context context, int requestCode, String[] permissions, int[] grantResults, String fileName, String content) {
if (requestCode == REQUEST_PERMISSION_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
saveInternalFile(context, fileName, content);
} else {
Toast.makeText(context, "保存文件需要存储权限", Toast.LENGTH_SHORT).show();
}
}
}
private static void saveInternalFile(Context context, String fileName, String content) {
File file = new File(Environment.getExternalStorageDirectory(), fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(content.getBytes());
fos.close();
Toast.makeText(context, "文件保存成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(context, "文件保存失败", Toast.LENGTH_SHORT).show();
}
}
}
在Activity或Fragment中,调用FileUtil.saveFile()
方法保存文件。
String fileName = "example.txt";
String content = "Hello, world!";
FileUtil.saveFile(this, fileName, content);
为了正常运行,还需要在AndroidManifest.xml文件中添加以下权限:
上一篇:保存文件输出