2016-11-07 4 views
0

Ребята Нового в Нуга приходят из желе Попытки написать SDCARD текстового файла я знаю, что теперь я должен запрос разрешения, но не может найти какой-либо код, который работаетAndroid 7.1 Записи в текстовый файл

попытался следующим

 StringBuilder bodyStr=new StringBuilder(); 
       bodyStr.append(data1Str.toString()).append(",").append(data2Str.toString()).append(",").append(data3Str.toString()).append(",").append(data4Str.toString()).append(",").append(data5Str.toString()).append(",").append(data22Str.toString()).append(",").append(data23Str.toString()).append(lineSep);; 
      String bodytextStr=bodyStr.toString(); 

       boolean hasPermission = (ContextCompat.checkSelfPermission(data_entry.this, 
         Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED); 
       if (!hasPermission) { 
        ActivityCompat.requestPermissions(data_entry.this, 
          new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 
          REQUEST_WRITE_STORAGE); 
       } 


       try { 

        File myFile = new File(fileName); 
        myFile.createNewFile(); 
        FileOutputStream fOut = new FileOutputStream(myFile); 
        OutputStreamWriter myOutWriter = 
          new OutputStreamWriter(fOut); 
        myOutWriter.append(bodytextStr); 
        myOutWriter.close(); 
        fOut.close(); 
        Toast.makeText(getBaseContext(), 
          "Done writing SD 'mysdfile.txt'", 
          Toast.LENGTH_SHORT).show(); 
       } catch (Exception e) { 
        Toast.makeText(getBaseContext(), e.getMessage(), 
          Toast.LENGTH_SHORT).show(); 
       } 

Возвращается [разрешение отказано]

установили обычные разрешения в манифесте

любых идей, где я буду неправильно

Любая помощь Оценил

Марк

ответ

0

Либо у вас есть разрешение, либо вы можете сделать блок catch try, где вы пишете файл, или вы должны сделать это в onRequestPermissionsResult.

Что-то вроде:

public void yourMethod(){ 
    boolean hasPermission = (ContextCompat.checkSelfPermission(data_entry.this, 
        Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED); 
    if(hasPermission){ 
     // write 
    }else{ 
     // ask the permission 
     ActivityCompat.requestPermissions(data_entry.this, 
         new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 
         REQUEST_WRITE_STORAGE); 
     // You have to put nothing here (you can't write here since you don't 
     // have the permission yet and requestPermissions is called asynchronously) 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, 
             @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    // The result of the popup opened with the requestPermissions() method 
    // is in that method, you need to check that your application comes here 
    if (requestCode == REQUEST_WRITE_STORAGE) { 
     if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      // write 
     } 
    } 
} 

Я предлагаю вам проверить эту ссылку: https://developer.android.com/training/permissions/requesting.html

+0

жаль, что я до сих пор получить разрешение отказано, что Я не могу получить те же действия имеет метод, который сохраняет изображение, сделанное с помощью камеры, и он сохраняет его в каталоге изображений в порядке, но когда я пытаюсь сделать то же самое с текстом, он говорит, что разрешение отклонено – user3422687

+0

. Я помещаю тост в свой метод, и это собираюсь спросить код разрешения в разделе else, но не устанавливает разрешение – user3422687

+0

Если у вас есть какие-либо сомнения в разрешении, которое у вас уже есть, вы можете проверить настройки устройства в разделе о приложении (управление приложениями или что-то в этом роде) и проверить ваше приложение: должно быть указано «Разрешения» " раздел. Что у вас там? –