仅在首次安装应用程序后创建的文件 - ANDROID
File created only after first installation of the app - ANDROID
我有这个代码:
private void requestPermissionAndExport() {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
1);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
if (requestCode == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
try {
export();
} catch (IOException e) {
e.printStackTrace();
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
public void export() throws IOException {
String csv_data = "testtest";
File root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
root = new File(root, "my_csv.csv");
try {
FileOutputStream fout = new FileOutputStream(root);
fout.write(csv_data.getBytes());
fout.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
当我第一次安装并启动该应用程序时,它可以正常工作。如果用户从下载文件夹中删除 csv
文件并尝试再次打开应用程序并再次导出 csv
,则没有任何反应。此外,如果我每次都为文件生成不同的名称,则只会创建第一个(安装应用程序后)。
为什么这只在第一个实例中有效?
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
if (requestCode == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
try {
export();
} catch (IOException e) {
e.printStackTrace();
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
大概就是这个原因。您仅在 onRequestPermissionsResult()
内调用 export()
并且应用仅请求一次权限,并记住它直到您卸载它。自己尝试一下:如果您从应用程序管理器中清除应用程序数据,它会再次询问,然后再次导出文件。
我有这个代码:
private void requestPermissionAndExport() {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
1);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
if (requestCode == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
try {
export();
} catch (IOException e) {
e.printStackTrace();
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
public void export() throws IOException {
String csv_data = "testtest";
File root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
root = new File(root, "my_csv.csv");
try {
FileOutputStream fout = new FileOutputStream(root);
fout.write(csv_data.getBytes());
fout.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
当我第一次安装并启动该应用程序时,它可以正常工作。如果用户从下载文件夹中删除 csv
文件并尝试再次打开应用程序并再次导出 csv
,则没有任何反应。此外,如果我每次都为文件生成不同的名称,则只会创建第一个(安装应用程序后)。
为什么这只在第一个实例中有效?
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
if (requestCode == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
try {
export();
} catch (IOException e) {
e.printStackTrace();
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
大概就是这个原因。您仅在 onRequestPermissionsResult()
内调用 export()
并且应用仅请求一次权限,并记住它直到您卸载它。自己尝试一下:如果您从应用程序管理器中清除应用程序数据,它会再次询问,然后再次导出文件。