仅在首次安装应用程序后才创建文件-ANDROID

问题描述 投票:0回答:1

我有此代码:

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";/// your csv data as string;
    File root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

    // select the name for your file
    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,则不会发生任何事情。同样,如果我为文件生成每次不同的名称,则仅创建第一个(安装应用程序后)。为什么这仅在第一时间有效?

android export-to-csv android-permissions android-file
1个回答
1
投票
可能就是原因。您只能在export()内部调用onRequestPermissionsResult(),并且应用仅询问一次权限,并记住它,直到将其卸载为止。自己尝试:如果您从应用程序管理器中清除了应用程序数据,它将再次询问,然后再次导出文件。
© www.soinside.com 2019 - 2024. All rights reserved.