2010-12-01 54 views
0

Bonjour Mon but est d'obtenir l'adresse locale en utilisant l'émulateur sdk 2.2. J'ai écrit ce code mais quand je le lance, dites-moi de fermer l'application. c'est le codeComment obtenir l'adresse IP avec un émulateur Android

package exercice1.identificateur.ex; 

import java.net.InetAddress; 
import java.net.NetworkInterface; 
import java.net.SocketException; 
import java.util.Enumeration; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 
import exercice1.identificateur.R; 

public class wifi1 extends ListActivity { 
private static final String LOG_TAG = null; 
public String getLocalIpAddress() { 
    try { 
     for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { 
      NetworkInterface intf = en.nextElement(); 
      for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { 
       InetAddress inetAddress = enumIpAddr.nextElement(); 
       if (!inetAddress.isLoopbackAddress()) { 
        return inetAddress.getHostAddress().toString(); 
       } 
      } 
     } 
    } catch (SocketException ex) { 
     Log.e(LOG_TAG, ex.toString()); 
    } 
    return null; 
} 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    TextView tv = new TextView(this); 
     tv.setText(getLocalIpAddress()); 
     setContentView(tv); 
} 
} 

c'est le manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="exercice1.identificateur" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".ex.wifi1" 
        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> 
    <uses-sdk android:minSdkVersion="8" /> 

<uses-configuration></uses-configuration> 
<uses-feature></uses-feature> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><uses-sdk></uses-sdk> 
</manifest> 

J'espère que vous pouvez me aider Merci à l'avance

(Je n'ai pas un dispositif, Je n'utilise que l'émulateur d'installation dans mon PC, c'est possible?)

[edit] L'erreur:

12-01 17:13:23.154: ERROR/ AndroidRuntime(511): FATAL EXCEPTION: main 
12-01 17:13:23.154: ERROR/ AndroidRuntime(511): java.lang.RuntimeException: Unable to start activity ComponentInfo{exercice1.identificateur/ exercice1.identificateur.ex.wifi1}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
+1

Où et quelle est votre classe 'exercice1.identificateur.ex.nomprenom'? – WarrenFaith

Répondre

0

Très bonne question WarrenFaith. J'ai l'impression que le DalvikVM recherche une classe précompilée ou générée (ex.nomprenom). Quelle est la structure de votre projet? Sont-ce tous les fichiers du projet? Je pense que c'est un lien dans l'un des fichiers R de votre paquet.

+0

J'ai changé le nom de ma classe de nomprenom en wifi1, afin d'être plus significatif. –

+0

Que c'est le problème. On dirait que le changement de nom n'a pas été complètement terminé. Essayez de nettoyer le projet, supprimez l'application de l'émulateur et déployez-la à nouveau. – WarrenFaith

+0

le même problème. Je vais le logcat à Martin. Je ne peux pas le poster ici –