Autore Topic: Salvare dati in memoria interna  (Letto 3388 volte)

Offline svoa89

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Nexus 7
  • Sistema operativo:
    Ubuntu 13.10
Salvare dati in memoria interna
« il: 04 Ottobre 2013, 18:58:29 CEST »
0
Ciao a tutti...
avrei bisogno di salvare dei file in memoria del telefono... per ora lo faccio in "/mnt/sdcard" e "con grande stupore" ho notato che non funziona sui dispositivi sprovvisti  di memory card!!! come faccio a salvare quei file nella memoria interna del telefono????
 :'( :'( :'(
grazie in anticipo!!!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Salvare dati in memoria interna
« Risposta #1 il: 04 Ottobre 2013, 19:08:23 CEST »
+1
Per avere un path valido di memoria esterna io uso questo:

Codice (Java): [Seleziona]
File exportDir = Environment.getExternalStorageDirectory().getAbsolutePath();
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline uglyicons

  • Utente junior
  • **
  • Post: 88
  • UglyIcons - Great Apps (perlomeno ci proviamo)
  • Respect: +3
    • Mostra profilo
    • La mia app: EML Reader FREE
  • Dispositivo Android:
    Huawei Honour
  • Play Store ID:
    UglyIcons
  • Sistema operativo:
    Win
Re:Salvare dati in memoria interna
« Risposta #2 il: 05 Ottobre 2013, 08:32:57 CEST »
+1
Io di solito uso questa funzione

Codice (Java): [Seleziona]
        public static File getDirectoryCache(Context context) {
                File dir = context.getExternalCacheDir();
               
                if (dir == null) {
                        dir = context.getCacheDir();
                }
               
                return dir;
        }

Per comodità riporto il Javadoc relativo alle due funzioni:
Citazione
public abstract File getExternalCacheDir ()
Added in API level 8
Returns the absolute path to the directory on the external filesystem (that is somewhere on Environment.getExternalStorageDirectory() where the application can place cache files it owns.

This is like getCacheDir() in that these files will be deleted when the application is uninstalled, however there are some important differences:

The platform does not always monitor the space available in external storage, and thus may not automatically delete these files. Currently the only time files here will be deleted by the platform is when running on JELLY_BEAN_MR1 or later and Environment.isExternalStorageEmulated() returns true. Note that you should be managing the maximum space you will use for these anyway, just like with getCacheDir().
External files are not always available: they will disappear if the user mounts the external storage on a computer or removes it. See the APIs on Environment for information in the storage state.
There is no security enforced with these files. All applications can read and write files placed here.
On devices with multiple users (as described by UserManager), each user has their own isolated external storage. Applications only have access to the external storage for the user they're running as.

Writing to this path requires the WRITE_EXTERNAL_STORAGE permission.


Returns
Returns the path of the directory holding application cache files on external storage. Returns null if external storage is not currently mounted so it could not ensure the path exists; you will need to call this method again when it is available.

Citazione
public abstract File getCacheDir ()
Added in API level 1
Returns the absolute path to the application specific cache directory on the filesystem. These files will be ones that get deleted first when the device runs low on storage. There is no guarantee when these files will be deleted. Note: you should not rely on the system deleting these files for you; you should always have a reasonable maximum, such as 1 MB, for the amount of space you consume with cache files, and prune those files when exceeding that space.

Returns
Returns the path of the directory holding application cache files.
EML Reader FREE
Apri file e allegati EML e MSG da qualsiasi fonte.
Download su Play Store!

Offline svoa89

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Nexus 7
  • Sistema operativo:
    Ubuntu 13.10
Re:Salvare dati in memoria interna
« Risposta #3 il: 07 Ottobre 2013, 09:29:43 CEST »
0
allora, mi spiego meglio... io ho bisogno di salvare un file in memoria interna (no SD).
Codice (Java): [Seleziona]
                File testImageOnSdCard = new File("/mnt/sdcard", TEST_FILE_NAME);
                if (!testImageOnSdCard.exists()) {
                        copyTestImageToSdCard(testImageOnSdCard);
                }

il precorso "/mnt/sdcard" non lo trova nell'emulatore se non ha una SD montata o in un dispositivo senza SD (giustamente!!)... con quale percorso lo potrei sostituire??

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Salvare dati in memoria interna
« Risposta #4 il: 07 Ottobre 2013, 09:51:11 CEST »
0
al posto di :

"/mnt/sdcard"

metti:

context.getFilesDir()

dovrebbe andare nella memoria del telefono

al massimo prima controlla se puo salvare in sd se ti interessa di piu e in ripego vai nel tel

Offline svoa89

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Nexus 7
  • Sistema operativo:
    Ubuntu 13.10
Re:Salvare dati in memoria interna
« Risposta #5 il: 07 Ottobre 2013, 10:56:10 CEST »
0
non vuole... :( ti posto un po' di cose:

Codice (Java): [Seleziona]
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        urls = ConstantsGal1.prendiURL(this);
        setContentView(R.layout.galprova1);
        salva(this);
    }

    private void salva(Context context) {
        File testImageOnSdCard = new File(context.getFilesDir(), TEST_FILE_NAME);
        if (!testImageOnSdCard.exists()) {
            copyTestImageToSdCard(testImageOnSdCard);
        }              
        }

logCat
Codice: [Seleziona]
10-07 10:52:58.364: E/AndroidRuntime(333): FATAL EXCEPTION: main
10-07 10:52:58.364: E/AndroidRuntime(333): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.galleria.test/com.galleria.test.Galleria1}: java.lang.NullPointerException
10-07 10:52:58.364: E/AndroidRuntime(333):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
10-07 10:52:58.364: E/AndroidRuntime(333):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
10-07 10:52:58.364: E/AndroidRuntime(333):         at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-07 10:52:58.364: E/AndroidRuntime(333):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
10-07 10:52:58.364: E/AndroidRuntime(333):         at android.os.Handler.dispatchMessage(Handler.java:99)
10-07 10:52:58.364: E/AndroidRuntime(333):         at android.os.Looper.loop(Looper.java:123)
10-07 10:52:58.364: E/AndroidRuntime(333):         at android.app.ActivityThread.main(ActivityThread.java:3683)
10-07 10:52:58.364: E/AndroidRuntime(333):         at java.lang.reflect.Method.invokeNative(Native Method)
10-07 10:52:58.364: E/AndroidRuntime(333):         at java.lang.reflect.Method.invoke(Method.java:507)
10-07 10:52:58.364: E/AndroidRuntime(333):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-07 10:52:58.364: E/AndroidRuntime(333):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-07 10:52:58.364: E/AndroidRuntime(333):         at dalvik.system.NativeStart.main(Native Method)
10-07 10:52:58.364: E/AndroidRuntime(333): Caused by: java.lang.NullPointerException
10-07 10:52:58.364: E/AndroidRuntime(333):         at com.galleria.test.ConstantsGal1.prendiURL(ConstantsGal1.java:31)
10-07 10:52:58.364: E/AndroidRuntime(333):         at com.galleria.test.Galleria1.onCreate(Galleria1.java:26)
10-07 10:52:58.364: E/AndroidRuntime(333):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-07 10:52:58.364: E/AndroidRuntime(333):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)

la cosa che mi fa rimanere male è che sui dispositivi (virtuali e non) che danno una SD va benissimo e sarebbe pronta........ uffaaaaaaaaaaa

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Salvare dati in memoria interna
« Risposta #6 il: 07 Ottobre 2013, 11:03:42 CEST »
0
a vedere il log cat i problemi sono qui:

at com.galleria.test.ConstantsGal1.prendiURL(ConstantsGal1.java:31)
at com.galleria.test.Galleria1.onCreate(Galleria1.java:26)

che ce alla riga 31 di ConstantsGal1 ?
e alla 26 di Galleria1 immagino ci sia:

urls = ConstantsGal1.prendiURL(this);

mi sa che il problema è un altro

Offline svoa89

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Nexus 7
  • Sistema operativo:
    Ubuntu 13.10
Re:Salvare dati in memoria interna
« Risposta #7 il: 07 Ottobre 2013, 11:33:07 CEST »
0
a riga 31 di ConstantsGal1 inizia l'onCreate:
Codice (Java): [Seleziona]
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.ac_image_pager);

                Bundle bundle = getIntent().getExtras();
                String[] imageUrls = bundle.getStringArray(Extra.IMAGES);
                int pagerPosition = bundle.getInt(Extra.IMAGE_POSITION, 0);

                if (savedInstanceState != null) {
                        pagerPosition = savedInstanceState.getInt(STATE_POSITION);
                }

                options = new DisplayImageOptions.Builder()
                        .showImageForEmptyUri(R.drawable.ic_empty)
                        .showImageOnFail(R.drawable.ic_error)
                        .resetViewBeforeLoading(true)
                        .cacheOnDisc(true)
                        .imageScaleType(ImageScaleType.EXACTLY)
                        .bitmapConfig(Bitmap.Config.RGB_565)
                        .displayer(new FadeInBitmapDisplayer(300))
                        .build();

                pager = (ViewPager) findViewById(R.id.pager);
                pager.setAdapter(new ImagePagerAdapter(imageUrls));
                pager.setCurrentItem(pagerPosition);
        }

ci sarebbe un secondo file che scrivo e leggo nella memoria...che sia li il problema????
Codice (Java): [Seleziona]
public class JSONParserNested {  
         
          public JSONParserNested() {

          }

          public JSONObject getJSONFromUrl(String url, Context context) {

            String sdCard = Environment.getExternalStorageDirectory().getAbsolutePath();
            String json = null;
                if(isConnectionAvailable(context)) {
              InputStream is = null;
                // ho una connessione disponibile, scarico il json
              try {
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();

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

              try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(is,
                    "iso-8859-1"), 8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                  sb.append(line + "\n");
                }
                is.close();
                json = sb.toString();
                // ottenuto il json lo salvo su file
                File file = new File(sdCard, "gallery.json");
                FileWriter out = new FileWriter(file);
                out.write(json);
                out.close();
                // file salvato.
              }
              catch (Exception e) {
                Log.e("Buffer Error", "Error converting result " + e.toString());
                return null;
              }
            }

            // carico il file
            StringBuilder stringBuilder = new StringBuilder();
            String line;
            BufferedReader in = null;
            try {
              in = new BufferedReader(new FileReader(new File(sdCard,"gallery.json")));
              while ((line = in.readLine()) != null)
                stringBuilder.append(line);
              in.close();
              json = stringBuilder.toString();
            }
            catch (FileNotFoundException e) {
              // non c'è il file: non ho connessione e non l'ho mai scaricato prima.  
              return null;
            }
            catch (IOException e) {
              Log.e("File read", "Error loading json gallery " + e.toString());
            }

            JSONObject jObj;
                // ottengo il JSONObject e lo torno.
            try {
              jObj = new JSONObject(json);
            }
            catch (JSONException e) {
              Log.e("JSON Parser", "Error parsing data " + e.toString());
              return null;
            }
            return jObj;
          }

          /**
           * Verifica se è presente una connessione internet sul dispositivo
           *
           * @param context
           *          context di riferimento
           * @return true se è presente una connessione, false altrimenti
           */

          public static boolean isConnectionAvailable(Context context) {
            ConnectivityManager connec = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
            if(connec.getActiveNetworkInfo() == null) {
              return false;
            }

            return true;
          }
          }
       
       


confermo...non riesce a caricare il gallery.json... come faccio a salvare questo file in un posto raggiungibile anche senza sd???
« Ultima modifica: 07 Ottobre 2013, 11:34:49 CEST da svoa89 »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Salvare dati in memoria interna
« Risposta #8 il: 07 Ottobre 2013, 11:40:31 CEST »
+1
La questione delle memorie interne/esterne non mi è così semplice, perchè almeno da quanto capisco ci sono tre tipologie di memorie: quella interna, quella esterna integrata e quella esterna su SD.

Per esempio sul mio Galaxy S la memoria interna è quella interna dove sono installate le app.
Quella esterna (montanta su /mnt/sdcard) è la memoria esterna integrata nel telefono, accessibile usando getExternalStorageDirectory().
La memoria SD esterna è invece montata su /mnt/sdcard/external_sd.

Domanda: quando fai Environment.getExternalStorageDirectory().getAbsolutePath(); che path ti restituisce sul terminale che genera l'errore?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Salvare dati in memoria interna
« Risposta #9 il: 07 Ottobre 2013, 11:43:48 CEST »
+1
alla veloce io guarderei la variabile sdCard che hai nel json
quella ti manda al sd credo prova a mettere :

String sdCard=context.getFilesDir();

vedi come reagisce

Offline svoa89

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Nexus 7
  • Sistema operativo:
    Ubuntu 13.10
Re:Salvare dati in memoria interna
« Risposta #10 il: 07 Ottobre 2013, 11:50:22 CEST »
0
allora, ti spiego cosa devo fare così forse riusciamo a capire che memoria serve... in pratica ho un app che mi scarica delle immagini da url. gli url sono in un file JSON. dato che le immagini devono essere reperibili anche ofline ho deciso di salvare il json in memoria  e poi fare il parsing del json dalla memoria non da url... anche xke il json mi serve anche come indice per caricare le immagini che vengono scaricate anche esse (utilizzo la librerie universal image loader).
il logCat di quando mando in esecuzione l'app su un dispositivo SENZA sd è:
Codice (Java): [Seleziona]
10-07 11:48:39.134: D/ImageLoader(336): Initialize ImageLoader with configuration
10-07 11:48:41.415: W/KeyCharacterMap(336): No keyboard for id 0
10-07 11:48:41.415: W/KeyCharacterMap(336): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
10-07 11:48:47.666: E/Buffer Error(336): Error converting result java.io.FileNotFoundException: /mnt/sdcard/gallery.json (Permission denied)
10-07 11:48:47.666: D/AndroidRuntime(336): Shutting down VM
10-07 11:48:47.675: W/dalvikvm(336): threadid=1: thread exiting with uncaught exception (group=0x40015560)
10-07 11:48:47.695: E/AndroidRuntime(336): FATAL EXCEPTION: main
10-07 11:48:47.695: E/AndroidRuntime(336): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.galleria.test/com.galleria.test.Galleria1}: java.lang.NullPointerException
10-07 11:48:47.695: E/AndroidRuntime(336):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
10-07 11:48:47.695: E/AndroidRuntime(336):      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
10-07 11:48:47.695: E/AndroidRuntime(336):      at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-07 11:48:47.695: E/AndroidRuntime(336):      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
10-07 11:48:47.695: E/AndroidRuntime(336):      at android.os.Handler.dispatchMessage(Handler.java:99)
10-07 11:48:47.695: E/AndroidRuntime(336):      at android.os.Looper.loop(Looper.java:123)
10-07 11:48:47.695: E/AndroidRuntime(336):      at android.app.ActivityThread.main(ActivityThread.java:3683)
10-07 11:48:47.695: E/AndroidRuntime(336):      at java.lang.reflect.Method.invokeNative(Native Method)
10-07 11:48:47.695: E/AndroidRuntime(336):      at java.lang.reflect.Method.invoke(Method.java:507)
10-07 11:48:47.695: E/AndroidRuntime(336):      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-07 11:48:47.695: E/AndroidRuntime(336):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-07 11:48:47.695: E/AndroidRuntime(336):      at dalvik.system.NativeStart.main(Native Method)
10-07 11:48:47.695: E/AndroidRuntime(336): Caused by: java.lang.NullPointerException
10-07 11:48:47.695: E/AndroidRuntime(336):      at com.galleria.test.ConstantsGal1.prendiURL(ConstantsGal1.java:31)
10-07 11:48:47.695: E/AndroidRuntime(336):      at com.galleria.test.Galleria1.onCreate(Galleria1.java:26)
10-07 11:48:47.695: E/AndroidRuntime(336):      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-07 11:48:47.695: E/AndroidRuntime(336):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
10-07 11:48:47.695: E/AndroidRuntime(336):      ... 11 more
se invece l'SD c'è va tutto a buon fine!!! fa tutto quello che deve online, offline...tutto.... :'( :'( :'( :'(

Post unito: 07 Ottobre 2013, 12:04:56 CEST
sembra che il problema sia esattamente quello che ha detto zorcraft... sto provando l'app in un emulatore senza SD e funziona!!! (prima non funzionava!!!) ora provo in un po' di dispositivi e vi aggiorno!!!
Grazie mille ad entrambi!! gentilissimi!!!  :-) :-)
« Ultima modifica: 07 Ottobre 2013, 12:04:56 CEST da svoa89, Reason: Merged DoublePost »

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Salvare dati in memoria interna
« Risposta #11 il: 07 Ottobre 2013, 12:06:28 CEST »
+1
ma il json è impacchettato nella tua app o lo scarichi una volta e lo salvi?

se è impacchettato nella tua app, devi leggerlo dalla cartella assett o dalla cartella raw (ovviamente dopo averlo messo li).

Non è che sei stato chiarissimo, il codice che hai copiato non è che sia chiarissimo, poi se il file è diciamo "di caching" ci sono le cartelle interne e esterne di caching.

Come ti hanno consigliato devi usare context.getFilesDir(), ma non solo quando cerchi il json, anche quando lo scrivi!!!!


Ti consiglio di leggere un po di documentazione: Storage Options | Android Developers

Citazione
Saving cache files

If you'd like to cache some data, rather than store it persistently, you should use getCacheDir() to open a File that represents the internal directory where your application should save temporary cache files.

When the device is low on internal storage space, Android may delete these cache files to recover space. However, you should not rely on the system to clean up these files for you. You should always maintain the cache files yourself and stay within a reasonable limit of space consumed, such as 1MB. When the user uninstalls your application, these files are removed.

Other useful methods

getFilesDir()
Gets the absolute path to the filesystem directory where your internal files are saved.
getDir()
Creates (or opens an existing) directory within your internal storage space.
deleteFile()
Deletes a file saved on the internal storage.
fileList()
Returns an array of files currently saved by your application.
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline svoa89

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Nexus 7
  • Sistema operativo:
    Ubuntu 13.10
Re:Salvare dati in memoria interna
« Risposta #12 il: 07 Ottobre 2013, 12:13:42 CEST »
0
per quello che riguarda il json procede così:
- se il dispositivo dispone di una connessione ad internet lo scarica da URL e lo salva nel dispositivo
- se è offline usa quello vecchio scaricato in precedenza.

cmq sembra che ho risolto così come avete detto tu e zorcraft... faccio qualche altro test e vi faccio sapere!!! grazie mille!!!

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Salvare dati in memoria interna
« Risposta #13 il: 07 Ottobre 2013, 12:14:49 CEST »
0
se non funziona solo senza sd , secondo me devi modificare la clase json come dicevo prima,
dove dichiari la variabile che e il percorso del file da salvare metti :

String sdCard=context.getFilesDir();

al massimo puoi fare un controllo se ce l'SD:

String state = Environment.getExternalStorageState();

con la variabile state puoi creare una cosa cosi:
Codice (Java): [Seleziona]
String sdCard = "";
String state = Environment.getExternalStorageState();
if(state==true){
    sdCard = Environment.getExternalStorageDirectory().getAbsolutePath();
}else{
    sdCard=context.getFilesDir();
}

Offline svoa89

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Nexus 7
  • Sistema operativo:
    Ubuntu 13.10
Re:Salvare dati in memoria interna
« Risposta #14 il: 07 Ottobre 2013, 15:43:30 CEST »
0
ho provato a fare i test sul mio nexus7 e il risultato è stato pessimo!!!!!
ecco tutto il logcat, dall'avvio del dispositivo...ora pero sembra che non riesca a fare la chiamata http.......

Codice: [Seleziona]
10-07 15:38:38.017: D/ImageLoader(31913): Initialize ImageLoader with configuration
10-07 15:38:38.087: D/libEGL(31913): loaded /system/lib/egl/libEGL_tegra.so
10-07 15:38:38.097: D/libEGL(31913): loaded /system/lib/egl/libGLESv1_CM_tegra.so
10-07 15:38:38.117: D/libEGL(31913): loaded /system/lib/egl/libGLESv2_tegra.so
10-07 15:38:38.137: D/OpenGLRenderer(31913): Enabling debug mode 0
10-07 15:38:52.427: D/dalvikvm(31913): GC_FOR_ALLOC freed 180K, 4% free 7874K/8132K, paused 15ms, total 15ms
10-07 15:38:55.757: D/AndroidRuntime(31913): Shutting down VM
10-07 15:38:55.757: W/dalvikvm(31913): threadid=1: thread exiting with uncaught exception (group=0x41b41700)
10-07 15:38:55.767: E/AndroidRuntime(31913): FATAL EXCEPTION: main
10-07 15:38:55.767: E/AndroidRuntime(31913): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.galleria.test/com.galleria.test.Galleria1}: android.os.NetworkOnMainThreadException
10-07 15:38:55.767: E/AndroidRuntime(31913):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at android.os.Handler.dispatchMessage(Handler.java:99)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at android.os.Looper.loop(Looper.java:137)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at android.app.ActivityThread.main(ActivityThread.java:5103)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at java.lang.reflect.Method.invokeNative(Native Method)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at java.lang.reflect.Method.invoke(Method.java:525)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at dalvik.system.NativeStart.main(Native Method)
10-07 15:38:55.767: E/AndroidRuntime(31913): Caused by: android.os.NetworkOnMainThreadException
10-07 15:38:55.767: E/AndroidRuntime(31913):         at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at java.net.InetAddress.getAllByName(InetAddress.java:214)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at com.galleria.test.JSONParserNested.getJSONFromUrl(JSONParserNested.java:41)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at com.galleria.test.ConstantsGal1.prendiURL(ConstantsGal1.java:29)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at com.galleria.test.Galleria1.onCreate(Galleria1.java:26)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at android.app.Activity.performCreate(Activity.java:5133)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
10-07 15:38:55.767: E/AndroidRuntime(31913):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
10-07 15:38:55.767: E/AndroidRuntime(31913):         ... 11 more
10-07 15:39:06.267: I/Process(31913): Sending signal. PID: 31913 SIG: 9
10-07 15:39:06.447: D/ImageLoader(31987): Initialize ImageLoader with configuration
10-07 15:39:06.517: D/libEGL(31987): loaded /system/lib/egl/libEGL_tegra.so
10-07 15:39:06.527: D/libEGL(31987): loaded /system/lib/egl/libGLESv1_CM_tegra.so
10-07 15:39:06.537: D/libEGL(31987): loaded /system/lib/egl/libGLESv2_tegra.so
10-07 15:39:06.567: D/OpenGLRenderer(31987): Enabling debug mode 0
10-07 15:40:30.947: D/dalvikvm(31987): GC_FOR_ALLOC freed 178K, 4% free 7877K/8132K, paused 15ms, total 15ms