2016-10-21 4 views
0

Я пытаюсь открыть .txt-файл и писать непрерывно каждые 10 миллисекунд в файл с помощью scheduleFixedRate.Написание непрерывно в файл в студии android

При выполнении файла я получаю сообщение с указанием на улове (при отладке), что:

java.io.FileNotFoundException: /storage/emulated/0/test.txt (доступ запрещен).

Я добавил разрешение на запись во внешнюю память. Файл не создается.

При выполнении попытки после outputstream = new FileOutputStream (file1); элемент управления показывает сообщение из вышеперечисленного.

import android.os.Environment; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.OutputStreamWriter; 
import java.util.Timer; 
import java.util.TimerTask; 

public class MainActivity extends AppCompatActivity { 

    Button bt1; 
    TextView text; 
    Timer timer = new Timer(); 
    File file1 = new File (Environment.getExternalStorageDirectory(), "Test.txt"); 


    @Override 
    protected void onCreate (Bundle savedInstanceState) { 
     super.onCreate (savedInstanceState); 
     setContentView (R.layout.activity_main); 
     final Button bt1 = (Button) findViewById (R.id.button); 
     final TextView text = (TextView) findViewById (R.id.textView); 
     assert bt1 != null; 
     bt1.setText ("Start"); 
     bt1.setOnClickListener (new View.OnClickListener() { 
      @Override 
      public void onClick (View v) { 
       if (bt1.getText().equals ("Stop")) { 
        bt1.setText ("Start"); 
       } else { 
        bt1.setText ("Stop"); 
        timer.scheduleAtFixedRate (task, 10, 10); 
       } 
      } 
     }); 
    } 

    TimerTask task = new TimerTask() { 
     @Override 
     public void run() { 
      writetime(); 

     } 
    }; 

    public void writetime() { 
     FileOutputStream outputstream; 
     try { 

      outputstream = new FileOutputStream (file1); 
      OutputStreamWriter oswriter = new OutputStreamWriter (outputstream); 
      BufferedWriter bwriter = new BufferedWriter (oswriter); 
      bwriter.append ("Repetition"); 
      bwriter.newLine(); 

      bwriter.close(); 
      outputstream.close(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

manifest.xml файл

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.kolla.usingtimer"> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 


    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
+0

Вы запускаете это на определенном устройстве или в эмуляторе? – Ivan

+0

Я проверил устройство, но файл никогда не создается. – kolla

+0

Не могли бы вы поделиться своим файлом манифеста здесь? – Ivan

ответ

0

Я нашел решение, так как я использую андроид зефир манифеста разрешение не является достаточным. Наряду с этим мы должны предоставить разрешение на хранение для приложения в настройках после установки приложения в телефоне, или мы можем использовать run time permission. Он работал, и теперь я могу создать файл.

Смежные вопросы