Создать каталог на Android R - PullRequest
0 голосов
/ 30 апреля 2020

Я хотел бы создать каталог «RawMeasurement» в моем телефоне в том же месте, что и Musi c, Document, Picture ... под Android R

, который я тестировал с более низкими версиями API, это работает, но при android R невозможно.

Я думаю, проблема в Environement.getExternalStorageDirectory()

Я искал другие методы, но безрезультатно.

Идеи? заранее спасибо

public void save(){

    String state;
    state = Environment.getExternalStorageState();

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm", Locale.getDefault());
    String currentDateAndTime = sdf.format(new Date());

    if(Environment.MEDIA_MOUNTED.equals(state)){
        File Dir  = new File(Environment.getExternalStorageDirectory().getPath(),"RawMeasurement");
        if(!Dir.exists()) {
            Dir.mkdirs();
            Toast.makeText(getContext(),"new folder",Toast.LENGTH_LONG).show();
        }
        File file = new File(Dir,"RawMeasurements"+currentDateAndTime+".txt");
        String message = "bla bla bla  " ;
        try{
            FileOutputStream out = new FileOutputStream(file);
            out.write(message.getBytes());
            out.close();
            Toast.makeText(getContext(),"message saved",Toast.LENGTH_LONG).show();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            logError("error");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }else{
        Toast.makeText(getContext(),"echec",Toast.LENGTH_LONG).show();
    }

}

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Я хотел бы создать каталог «RawMeasurement» в моем телефоне в том же месте, что и Musi c, Document, Picture ... в разделе Android R

Извините , но это не очень поддерживается. Вы можете запросить разрешение MANAGE_EXTERNAL_STORAGE, после чего вы сможете делать то, что хотите. Я предполагаю, что Google запретит ваше приложение в Play Store, если вы не предоставите действительно веские основания для этого разрешения.

То, что Google хочет, чтобы вы сделали, - это используйте ACTION_OPEN_DOCUMENT_TREE, чтобы позволить пользователю решать, где на пользовательское устройство, которое ваше приложение должно поставить необработанные измерения пользователя. Затем вы можете создать поддерево (каталог) в выбранном пользователем месте и поместить свой контент в это поддерево.

0 голосов
/ 30 апреля 2020

Система прав с android R немного изменилась, см. Обновления хранилища в Android 11 в официальной документации для получения дополнительной информации.

Я использовал externalMediaDirs.first() для своего собственный проект, но это поместит файлы в Android/Media/com.example/

...