Autore Topic: [facile] Abilitare il "Move to SD" per la propria applicazione  (Letto 8384 volte)

vincenzodicicco

  • Visitatore
[facile] Abilitare il "Move to SD" per la propria applicazione
« il: 23 Luglio 2010, 16:20:02 CEST »
+5
Livello di difficoltà: facile
Versione SDK utilizzata: 2.2
Link al file compresso del progetto eclipse: file in allegato

Questo breve tutorial vuole spiegare come aggiungere alla propria applicazione il supporto alla nuova funzione introdotta con android 2.2 ovvero la possibilità di spostare l'applicazione dalla memoria del telefono alla memoria SD.


I passi per abilitarla sono davvero pochi e semplici, i requisiti necessari sono un progetto con "api level 8".Girando per la rete ho letto anche che questa operazione è valida per firmware da 1.5 in su, ma io personalmente l'ho testata solo su Android 2.2.Basta semplicemente modificare il manifest come segue (Posto direttamente il codice xml del progetto in allegato):

Sorgenti:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.movetosd"
     android:versionCode="1"
     android:versionName="1.0"
     android:installLocation="auto"> <!--Questa è l'istuzione che l'abilita -->
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".main"
                 android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Tutto ciò che abilita questa funzione non è altro che l'istruzione "installLocation" che può avere tre valori: auto, internalOnly,preferExternal; come è facile intuire auto, darà all'utente la possibilità di scegliere dove installare l'applicaizone, internalOnly installerà l'applicazione solo sulla memoria del telefono togliendo la possibilità di muoverla, mentre preferExternal forzerà l'installazione solo sulla memoria SD.Se questa istruzione non viene specificata, di default android la imposterà come internalOnly.
Grazie a tutti spero che vi sia utile  :-)

Bibliografia:
« Ultima modifica: 14 Settembre 2010, 18:06:50 CEST da JD »

Offline PreStiige

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus One, Motorola Milestone.
  • Sistema operativo:
    Snow Leopard 10.6
Re:Abilitare il "Move to SD" per la propria applicazione
« Risposta #1 il: 01 Settembre 2010, 01:44:39 CEST »
0
ottimo, mi serviva proprio ;)
"You think, I dev" [.cit PreStiige]

;)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Abilitare il "Move to SD" per la propria applicazione
« Risposta #2 il: 01 Settembre 2010, 10:25:46 CEST »
0
Sto provando ad abilitarlo sul mio.
Per impostare l'api level 8, l'attributo da impostare dovrebbe essere il seguente:

Codice (XML): [Seleziona]
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="8" />
Solo che poi non mi riconosce:

Codice (XML): [Seleziona]
android:installLocation="auto"
Non capisco nel tuo manifest come hai impostato l'sdk target...

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Abilitare il "Move to SD" per la propria applicazione
« Risposta #3 il: 01 Settembre 2010, 10:52:34 CEST »
0
La nuova impostazione mi sa che funziona solo dalle api level 8, quindi anche la min deve essere impostata ad 8:

Codice (XML): [Seleziona]
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" />

Offline Agafi

  • Utente normale
  • ***
  • Post: 173
  • Respect: +10
    • svetlana-tomasevschi-perini
    • agafist
    • Mostra profilo
  • Dispositivo Android:
    SE Xperia Neo,LG Optimus One,Asus EEE Pad Transformer,HTC Magic Vodafone
  • Play Store ID:
    Agafi
  • Sistema operativo:
    Win7
Re:Abilitare il "Move to SD" per la propria applicazione
« Risposta #4 il: 01 Settembre 2010, 10:59:49 CEST »
0
La nuova impostazione mi sa che funziona solo dalle api level 8, quindi anche la min deve essere impostata ad 8:

Codice (XML): [Seleziona]
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" />
La nuova impostazione funziona solo con Froyo. Se venisse messo il minSdkVersion ad 8 solo le applicazioni che montano Froyo potranno usare l'applicazione, se invece rimane a 3 l'applicazione potrà essere lanciata anche da terminali che montano altre versioni di Android (naturalmente la funzione movetosd in questo caso non esisterà)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Abilitare il "Move to SD" per la propria applicazione
« Risposta #5 il: 01 Settembre 2010, 11:00:59 CEST »
0
La nuova impostazione mi sa che funziona solo dalle api level 8, quindi anche la min deve essere impostata ad 8:

Codice (XML): [Seleziona]
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" />

Nel sito che ha linkato vincenzodicicco però sembra esserci scritto il contrario...

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Abilitare il "Move to SD" per la propria applicazione
« Risposta #6 il: 01 Settembre 2010, 11:03:30 CEST »
0
La uso su Kitchen Timer da quando hanno rilasciato l'SDK 2.2. Si deve impostare come build del progetto Android 2.2 e poi indicare nel manifest
Codice (XML): [Seleziona]
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="8" />
Funziona tranquillamente anche su 1.5 (nel senso che non da problemi, ovviamente su 1.5 non puoi spostare l'app su SD).

Se avete dubbi guardate i sorgenti di KT :P
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Abilitare il "Move to SD" per la propria applicazione
« Risposta #7 il: 01 Settembre 2010, 11:11:17 CEST »
0
Ecco, mi ero perso il fatto di cambiare il target del progetto su eclipse... ecco perchè non andava.

Grazie :)

vincenzodicicco

  • Visitatore
Re:Abilitare il "Move to SD" per la propria applicazione
« Risposta #8 il: 01 Settembre 2010, 20:44:49 CEST »
0
Scusate se ho sbagliato qualcosa, ricordo che quel giorno lo provai di fretta ed andò tutto correttamente e decisi di segnalare quanto letto, perdonatemi :-( se va modificato qualcosa faccio subito

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Abilitare il "Move to SD" per la propria applicazione
« Risposta #9 il: 01 Settembre 2010, 20:59:51 CEST »
0
Se si utilizza l'SDK 2.2, come indicato nel tuo tutorial, funziona tutto correttamente ;)
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

vincenzodicicco

  • Visitatore
Re:Abilitare il "Move to SD" per la propria applicazione
« Risposta #10 il: 01 Settembre 2010, 21:02:24 CEST »
0
Se si utilizza l'SDK 2.2, come indicato nel tuo tutorial, funziona tutto correttamente ;)
Va bene  :-)

Offline MMarko

  • Utente junior
  • **
  • Post: 128
  • Respect: +5
    • MarcoMatarazzi
    • Mostra profilo
    • La Rocchetta Bed And Breakfast
  • Dispositivo Android:
    HTC Legend
  • Play Store ID:
    MarcoMatarazzi
Re:[facile] Abilitare il "Move to SD" per la propria applicazione
« Risposta #11 il: 21 Novembre 2010, 14:39:56 CET »
0
Pollice in su  :D

vincenzodicicco

  • Visitatore
Re:[facile] Abilitare il "Move to SD" per la propria applicazione
« Risposta #12 il: 24 Novembre 2010, 19:50:04 CET »
0
Grazie  :-) mi scuso con tutti della mia assenza ma tra scuola e lavoro   :-X :-X :-X , anche se non sono un utente molto popolare  :-) :-)

Offline roccia80

  • Utente junior
  • **
  • Post: 89
  • Respect: 0
    • Mostra profilo
Re:[facile] Abilitare il "Move to SD" per la propria applicazione
« Risposta #13 il: 07 Gennaio 2011, 18:28:52 CET »
0
Ottimo tutorial!
Oggi ho provato a creare, in eclipse adt, un avd di GalaxyTab con sdcard. Ho modificato manifest di mia applicazione (con target android 2.3) come sopra indicato e tutto ha funzionato regolarmente: una volta installata applicazione, nella gestione di queste mi son trovato abilitato il pulsante per fare il "Move to SD" che si è risolto correttamente e in breve tempo.
Poi ho lanciato nuovamente l'applicazione e sono riuscito a consultarla senza problemi.
Ci sono però dei concetti che non mi sono chiari e spero tanto in una vostra risposta come aiuto per risolvere i dubbi. Questo "Move to SD" funziona correttamente ok, ma io nella mia applicazione prevedo la copia di file (db e file di testo con dati utili) dalla cartella assets al filesystem: questo si verifica ancora regolarmente? è giusto come approccio oppure devo fare si che tutto venga poi copiato su sd card? Qual'è il vero obiettivo e i veri vantaggi del "Move to SD"?

Grazie
Ciao a tutti!

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:[facile] Abilitare il "Move to SD" per la propria applicazione
« Risposta #14 il: 07 Gennaio 2011, 19:17:33 CET »
0
Il Move to SD è gestito in maniera trasparente da Android, non ti devi preoccupare. Fa solo attenzione che la tua app non ricada in queste categorie:

Citazione
Applications That Should NOT Install on External Storage

When the user enables USB mass storage to share files with their computer (or otherwise unmounts or removes the external storage), any application installed on the external storage and currently running is killed. The system effectively becomes unaware of the application until mass storage is disabled and the external storage is remounted on the device. Besides killing the application and making it unavailable to the user, this can break some types of applications in a more serious way. In order for your application to consistently behave as expected, you should not allow your application to be installed on the external storage if it uses any of the following features, due to the cited consequences when the external storage is unmounted:

Services
Your running Service will be killed and will not be restarted when external storage is remounted. You can, however, register for the ACTION_EXTERNAL_APPLICATIONS_AVAILABLE broadcast Intent, which will notify your application when applications installed on external storage have become available to the system again. At which time, you can restart your Service.
Alarm Services
Your alarms registered with AlarmManager will be cancelled. You must manually re-register any alarms when external storage is remounted.
Input Method Engines
Your IME will be replaced by the default IME. When external storage is remounted, the user can open system settings to enable your IME again.
Live Wallpapers
Your running Live Wallpaper will be replaced by the default Live Wallpaper. When external storage is remounted, the user can select your Live Wallpaper again.
Live Folders
Your Live Folder will be removed from the home screen. When external storage is remounted, the user can add your Live Folder to the home screen again.
App Widgets
Your App Widget will be removed from the home screen. When external storage is remounted, your App Widget will not be available for the user to select until the system resets the home application (usually not until a system reboot).
Account Managers
Your accounts created with AccountManager will disappear until external storage is remounted.
Sync Adapters
Your AbstractThreadedSyncAdapter and all its sync functionality will not work until external storage is remounted.
Device Administrators
Your DeviceAdminReceiver and all its admin capabilities will be disabled, which can have unforeseeable consequences for the device functionality, which may persist after external storage is remounted.
Broadcast Receivers listening for "boot completed"
The system delivers the ACTION_BOOT_COMPLETED broadcast before the external storage is mounted to the device. If your application is installed on the external storage, it can never receive this broadcast.

If your application uses any of the features listed above, you should not allow your application to install on external storage. By default, the system will not allow your application to install on the external storage, so you don't need to worry about your existing applications. However, if you're certain that your application should never be installed on the external storage, then you should make this clear by declaring android:installLocation with a value of "internalOnly". Though this does not change the default behavior, it explicitly states that your application should only be installed on the internal storage and serves as a reminder to you and other developers that this decision has been made.


App Install Location | Android Developers

Il Move to SD serve a spostare un po' dello spazio occupato dalle App sulla SD, così da poter installare un numero maggiore di applicazioni.
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !