Guardar archivo en el almacenamiento interno android

Soy nuevo en android, y estoy teniendo un problema cuando estoy tratando de guardar un archivo en el almacenamiento interno, el nuevo ejemplo funciona en mi sdk, pero no funciona en mi teléfono.

Estoy tratando de ejecutar el ejemplo en un sony Ericsson xperia, con Android 2.1 por cierto … el log.i – me da la siguiente línea:

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

Gracias.

  @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); } }); } 

En mi android manifiest tengo los permisos

  <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" /> 

No estoy muy seguro de qué ejemplo se está refiriendo pero tengo dos ejemplos de trabajo aquí de los cuales al menos uno de ellos debe adaptarse a sus necesidades. He probado estos en un X10 ejecutando el número de construcción 2.1.A.0.435, un Xperia T corriendo el número de construcción 7.0.A.1.303 y un Nexus S corriendo el número de construcción JZO54K

Ejemplo 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(); } 

Ejemplo 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(); } 

Tuve el problema de "Permiso denegado" con Samsung Galaxy S7 a pesar de que había dado permisos de lectura y escritura en el archivo de manifiesto. Lo solucioné accediendo a la configuración del teléfono >> aplicación >> [mi aplicación] y permitió "Almacenamiento" bajo permiso. Funcionó bien después de eso.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.