Aplicación de transferencia a la aplicación Samsung Galaxy Tab

He estado desarrollando una aplicación en el deseo de HTC. Corre muy bien. La aplicación cuando se hace clic en un botón descarga un archivo desde el servidor web y lo guarda en la tarjeta SD.

Ahora quiero ejecutar esta aplicación en mi Samsung Galaxy Tab. Sin embargo, se bloquea cuando hago clic en el botón.

La única razón que puedo ver es que la pestaña no permite el acceso a la tarjeta SD. Es la misma tarjeta SD que tenía en el teléfono HTC Deisre y no está protegido contra escritura o algo?

Alguien sabe lo que puede estar mal?

Este es el código que estoy usando para descargar un archivo y almacenarlo en la tarjeta …

class CreatefilesTask extends AsyncTask<Object, Integer, Boolean> { protected Boolean doInBackground(Object... arg0) { try{ URL url = new URL("http://213.143.36.32/file.csv"); URLConnection conexion = url.openConnection(); conexion.connect(); int lenghtOfFile = conexion.getContentLength(); InputStream is = url.openStream(); File testDirectory = new File(Environment.getExternalStorageDirectory()+"/File"); if(!testDirectory.exists()){ testDirectory.mkdir(); } FileOutputStream fos = new FileOutputStream(testDirectory+"/file.csv"); byte data[] = new byte[1024]; int count = 0; long total = 0; int progress = 0; while ((count=is.read(data)) != -1){ total += count; int progress_temp = (int)total*100/lenghtOfFile; if(progress_temp%10 == 0 && progress != progress_temp){ progress = progress_temp; } fos.write(data, 0, count); } is.close(); fos.close(); } catch(Exception e){ e.printStackTrace(); } 

Esto funciona bien en el deseo.

StackTrace ..

 03-31 12:45:07.823: INFO/PowerManagerService(2494): Ulight 3->7|0 03-31 12:45:07.831: VERBOSE/WindowManager(2494): Delivering toWindow{48419208 com.android.qservices/com.android.qservices.AdminActivity paused=false} 03-31 12:45:07.898: VERBOSE/WindowManager(2494): Delivering toWindow{48419208 com.android.qservices/com.android.qservices.AdminActivity paused=false} 03-31 12:45:08.261: WARN/System.err(5314): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 03-31 12:45:08.261: WARN/System.err(5314): at android.os.Handler.<init>(Handler.java:121) 03-31 12:45:08.265: WARN/System.err(5314): at android.widget.Toast.<init>(Toast.java:77) 03-31 12:45:08.265: WARN/System.err(5314): at android.widget.Toast.makeText(Toast.java:266) 03-31 12:45:08.269: WARN/System.err(5314): at com.android.qservices.AdminActivity$CreatefilesTask.doInBackground(AdminActivity.java:117) 03-31 12:45:08.269: WARN/System.err(5314): at com.android.qservices.AdminActivity$CreatefilesTask.doInBackground(AdminActivity.java:1) 03-31 12:45:08.269: WARN/System.err(5314): at android.os.AsyncTask$2.call(AsyncTask.java:185) 03-31 12:45:08.269: WARN/System.err(5314): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 03-31 12:45:08.273: WARN/System.err(5314): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 03-31 12:45:08.273: WARN/System.err(5314): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 03-31 12:45:08.273: WARN/System.err(5314): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 03-31 12:45:08.273: WARN/System.err(5314): at java.lang.Thread.run(Thread.java:1096) 03-31 12:45:08.280: WARN/System.err(5314): java.io.FileNotFoundException: /mnt/sdcard/File/file.csv (No such file or directory) 03-31 12:45:08.284: WARN/System.err(5314): at org.apache.harmony.luni.platform.OSFileSystem.openImpl(Native Method) 03-31 12:45:08.284: WARN/System.err(5314): at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:152) 03-31 12:45:08.288: WARN/System.err(5314): at java.io.FileInputStream.<init>(FileInputStream.java:82) 03-31 12:45:08.288: WARN/System.err(5314): at com.android.qservices.AdminActivity$CreatefilesTask.doInBackground(AdminActivity.java:148) 03-31 12:45:08.288: WARN/System.err(5314): at com.android.qservices.AdminActivity$CreatefilesTask.doInBackground(AdminActivity.java:1) 03-31 12:45:08.288: WARN/System.err(5314): at android.os.AsyncTask$2.call(AsyncTask.java:185) 03-31 12:45:08.292: WARN/System.err(5314): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 03-31 12:45:08.292: WARN/System.err(5314): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 03-31 12:45:08.292: WARN/System.err(5314): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 03-31 12:45:08.296: WARN/System.err(5314): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 03-31 12:45:08.296: WARN/System.err(5314): at java.lang.Thread.run(Thread.java:1096) 

Samsung Galaxy Tab tiene una buena cantidad de memoria flash interna. Así que Environment.getExternalStorageDirectory() devuelve /mnt/sdcard/ pero esto es realmente el almacenamiento interno. El almacenamiento externo real está en /mnt/sdcard/external_sd/ . Consulte este post para obtener más detalles.

Encontró la respuesta! En la pestaña Galaxy el almacenamiento no es solo / sdcard es / sdcard / external_sd /

Supongo que esta línea causa el problema:

 new FileOutputStream(testDirectory+"/file.csv"); 

Primero crea un file directorio, pero de acuerdo con su stacktrace, intenta acceder a file.csv en la raíz de la tarjeta sd. Así que supongo que no se puede simplemente añadir un archivo.csv a su variable testDirectory de tipo File .

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