Intereting Posts

Сохранение файла во внутреннем хранилище android

Я новичок в android, и у меня проблема, когда я пытаюсь сохранить файл во внутреннем хранилище, новый пример работает на моем sdk, но не работает на моем телефоне.

Я пытаюсь запустить пример в Sony Ericsson xperia, с Android 2.1, кстати … log.i – дает мне следующую строку:

/data/data/com.example.key/files/text/(my_title) 

Благодарю.

  @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.new_text); file = (EditText) findViewById(R.id.title_new); entry = (EditText) findViewById(R.id.entry_new); btn = (Button) findViewById(R.id.save_new); btn.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { File myDir = getFilesDir(); NEWFILENAME = file.getText().toString(); if (NEWFILENAME.contentEquals("")){ NEWFILENAME = "UNTITLED"; } NEWENTRY = entry.getText().toString(); try { File file_new = new File(myDir+"/text/", NEWFILENAME); file_new.createNewFile(); Log.i("file", file_new.toString()); if (file_new.mkdirs()) { FileOutputStream fos = new FileOutputStream(file_new); fos.write(NEWENTRY.getBytes()); fos.flush(); fos.close(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Intent textPass = new Intent("com.example.TEXTMENU"); startActivity(textPass); } }); } //That's for creating... then in other activity i'm reading @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.text_menu); btn = (Button) findViewById(R.id.newNote); listfinal = (ListView) findViewById(R.id.listView); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent textPass = new Intent("com.example.TEXTNEW"); startActivity(textPass); } }); listfinal.setOnItemClickListener(this); File fileWithinMyDir = getApplicationContext().getFilesDir(); loadbtn = (Button) findViewById(R.id.loadList); loadbtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { File myDir = getFilesDir(); File dir = new File(myDir + "/text/"); String[] files = dir.list(); //String[] files = getApplicationContext().fileList(); List<String> list = new ArrayList<String>(); for (int i =0; i < files.length; i++){ list.add(files[i]); } ArrayAdapter<String> ad = new ArrayAdapter<String>(TextMenu.this, android.R.layout.simple_list_item_1, android.R.id.text1, list); listfinal.setAdapter(ad); } }); } 

В моем ядре android я имею разрешения

  <uses-sdk android:minSdkVersion="5" android:targetSdkVersion="15" /> <uses-permission android:name="android.hardware.camera" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> 

Solutions Collecting From Web of "Сохранение файла во внутреннем хранилище android"

Я не слишком уверен, к какому примеру вы обращаемся, но у меня есть два рабочих образца, из которых по крайней мере один из них должен соответствовать вашим потребностям. Я тестировал их на запущенном X10 Build number 2.1.A.0.435, один Xperia T работает. Строит номер 7.0.A.1.303 и один запуск Nexus S. Строит номер JZO54K.

Пример 1

  String filename = "myfile"; String outputString = "Hello world!"; try { FileOutputStream outputStream = openFileOutput(filename, Context.MODE_PRIVATE); outputStream.write(outputString.getBytes()); outputStream.close(); } catch (Exception e) { e.printStackTrace(); } try { FileInputStream inputStream = openFileInput(filename); BufferedReader r = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder total = new StringBuilder(); String line; while ((line = r.readLine()) != null) { total.append(line); } r.close(); inputStream.close(); Log.d("File", "File contents: " + total); } catch (Exception e) { e.printStackTrace(); } 

Пример 2

  String filename = "mysecondfile"; String outputString = "Hello world!"; File myDir = getFilesDir(); try { File secondFile = new File(myDir + "/text/", filename); if (secondFile.getParentFile().mkdirs()) { secondFile.createNewFile(); FileOutputStream fos = new FileOutputStream(secondFile); fos.write(outputString.getBytes()); fos.flush(); fos.close(); } } catch (Exception e) { e.printStackTrace(); } try { File secondInputFile = new File(myDir + "/text/", filename); InputStream secondInputStream = new BufferedInputStream(new FileInputStream(secondInputFile)); BufferedReader r = new BufferedReader(new InputStreamReader(secondInputStream)); StringBuilder total = new StringBuilder(); String line; while ((line = r.readLine()) != null) { total.append(line); } r.close(); secondInputStream.close(); Log.d("File", "File contents: " + total); } catch (Exception e) { e.printStackTrace(); } 

У меня была проблема с разрешением отказа от Samsung Galaxy S7, хотя я дал разрешения на чтение и запись в файле манифеста. Я решил это, перейдя по настройкам телефона >> приложение >> [мое приложение] и разрешив «Хранение» с разрешения. После этого он отлично справился.