2010-02-12 18 views
0

Mon application peut être installé et exécuté sur Android,
à deux endroits différents:Mon application est-elle dans/system?

"/data/MyApplication" 

et

"/system/MyApplication". 

Je dois savoir où au moment est mon application installée,
si c'est dans "/ data /" ou si c'est dans "/ system".

Quelqu'un peut-il aider?

Merci beaucoup

Répondre

1

Vous pouvez utiliser adb pour savoir:

$ adb shell ls/données

ou

shell $ adb ls/système

Ou voulez-vous cette vérification à l'exécution à partir de votre application. Dans ce cas, vous pouvez utiliser

System.getProperty ("user.dir")

dans votre code Java.

+0

J'ai vraiment besoin de savoir cela à l'exécution – Tsimmi

+0

Ok, a ajouté cela à ma réponse. J'espère que cela t'aides. –

+0

Avec "System.getProperty (" user.dir ")" Je reçois seulement ceci: "/". ;-( – Tsimmi

2

où votre application Obtenir est installé par

getPackageManager().getApplicationInfo(getPackageName(), 0).sourceDir 

mais cela ne devrait pas être important pour votre application. Pourquoi en avez-vous besoin?

+0

J'ai besoin de savoir où mon application est installée Et oui, il sera installé comme une application système mais aussi OTA et j'ai besoin de savoir où c'est.Merci :) – Tsimmi

2

Veuillez ne pas coder en dur les chemins de répertoire.

Vous pouvez trouver de votre application fait partie de l'image système intégrée avec ApplicationInfo.FLAG_SYSTEM. Mais comme le dit l'autre affiche, il devrait y avoir peu de raisons de le faire ... et notez que si une version plus récente de votre application est installée depuis Market sur un appareil qui l'inclut, FLAG_SYSTEM sera toujours défini car il est encore effectivement une application du système.

0

S'il vous plaît utiliser le ci-dessous le code difficile à trouver l'emplacement du chemin d'application installée utilisateur soit dans/data ou/système:

PackageInfo paramPackageInfo = null; 
     try { 
      paramPackageInfo = getPackageManager().getPackageInfo(
        getPackageName(), 0); 
     } catch (NameNotFoundException e) { 
      e.printStackTrace(); 
     } 

ApplicationInfo localApplicationInfo = paramPackageInfo.applicationInfo; 

Pour le nom du paquet trouvé: localApplicationInfo.packageName

Fonder chemin d'application: localApplicationInfo.sourceDir

0

Je recommande d'utiliser l'outil de gestion de paquets pour cela. adb shell pm chemin d'accès your.package.le nom

Exemple d'utilisation:

#List all installed packages 
$ adb shell pm list packages 
package:com.android.soundrecorder 
.... 
package:com.android.email   # <-- System app 
.... 
package:course.labs.intentslab.test # <-- Custom app 

#Path for system app: 
$ adb shell pm path com.android.email 
package:/system/app/Email.apk 

#Path for regular app: 
$ adb shell pm path course.labs.intentslab.test 
package:/data/app/course.labs.intentslab.test-1.apk 

De la documentation:

chemin PAQUET Imprimer le chemin vers l'APK du donné PAQUET

Using package manager (pm)

Some info on Android StackOverflow