2012-10-27 6 views
0

Je suis en train de développer une application Android, mais je n'ai pas vraiment beaucoup d'expérience avec elle. Au moment où l'application lit toutes les informations de contact comme les noms et les numéros de téléphone et écrit les données dans un fichier XML qui est stocké dans la mémoire interne. Tout fonctionne correctement sur les appareils virtuels d'Android 4.1 à Android 2.2. Je travaille avec éclipse. Mais maintenant je voulais le tester sur de vrais appareils. Je l'ai d'abord installé sur un Smartphone avec Android 4.0. J'ai réussi à installer l'application et à le démarrer. L'application a également écrit le fichier mais il était vide. Ensuite, je l'ai installé sur un smartphone avec Android 2.3. Cela a également commencé mais je n'ai pas pu trouver le fichier. J'utilise AndroXplorer pour accéder au stockage interne.Android App est en cours d'exécution sur le périphérique virtuel, mais pas sur un périphérique réel

Comme je l'ai jamais travaillé avec Android Apps avant, quelqu'un peut-il me donner une idée comment je peux comprendre pourquoi l'application est en cours d'exécution sur tous les périphériques virtuels mais pas sur les vrais?

Merci d'avance!

public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Create new file 
    File newxmlfile = new File(this.getFilesDir(), "newcontacts3.xml"); 
    try { 
     newxmlfile.createNewFile(); 
    } catch (IOException e) { 
     Log.e("IOException", "Exception in create new File("); 
    } 
    FileOutputStream fileos = null; 
    try { 
     fileos = new FileOutputStream(newxmlfile); 

    } catch (FileNotFoundException e) { 
     Log.e("FileNotFoundException", e.toString()); 
    } 
    XmlSerializer serializer = Xml.newSerializer(); 
    try { 
     serializer.setOutput(fileos, "UTF-8"); 
     serializer.startDocument(null, Boolean.valueOf(true)); 
     serializer.setFeature(
       "http://xmlpull.org/v1/doc/features.html#indent-output", 
       true); 
     serializer.startTag(null, "root"); 

     ContentResolver cr = getContentResolver(); 
     Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, 
       null, null, null, null); 
     if (cursor.getCount() > 0) { 
      while (cursor.moveToNext()) { 

       String id = cursor.getString(cursor 
         .getColumnIndex(ContactsContract.Contacts._ID)); 

       serializer.startTag(null, "ContactID"); 
       serializer.attribute(null, "ID", id); 

       // GET ALL THE CONTACT DATA AND WRITE IT IN THE FILE 

       serializer.endTag(null, "ContactID"); 
      } 
     } 
     cursor.close(); 

     serializer.endTag(null, "root"); 
     serializer.endDocument(); 
     serializer.flush(); 
     fileos.close(); 

    } catch (Exception e) { 
     Log.e("Exception", "Exception occured in wroting"); 
    } 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

}

Mon minSDKVersion est 8, la version cible est 15. Et je l'ai ajouté la permission pour l'internet et l'autorisation de lire des contacts.

Lorsque je l'exécute sur les périphériques virtuels, l'application démarre, mon écran de démarrage apparaît et crée le fichier "newcontacs3.xml" sous data/data/com.examples.anotherproject/files.

+1

Donnez-nous quelques détails. Quelle est votre 'min-sdk' et' target'? – NewUser

+0

poster votre – Sathish

+0

manifeste @ user1778772 Poster plus d'informations ou un peu de code afin que nous puissions vous aider plus. –

Répondre

0

Vous pouvez accéder à la mémoire interne sur un périphérique réel si votre appareil est enraciné. Sur émulateur, vous avez l'accès root complet, vous pouvez donc le trouver sur /data/data/com.your.package/files/. Mais sur un périphérique réel non raclé vous n'avez pas le plein privilège.

Remplacer:

File newxmlfile = new File(this.getFilesDir(), "newcontacts3.xml"); 

Avec:

File newxmlfile = new File(Environment.getExternalStorageDirectory().getpath(), "newcontacts3.xml"); 

Et ajouter la permission de votre manifeste:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"> 

Vous trouverez votre fichier sur votre répertoire racine de stockage monté.

Questions connexes