1. Lonioo, 01.09.2011 #1
    Lonioo

    Lonioo Threadstarter Neuer Benutzer

    hi ich bin ein android noob und versuche das w-lan nach access points zu durchsuchen

    so sieht meine app aus

    my MainActivity:


    Code:
    package com.wifi;
    
    
    import android.app.Activity;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.net.ConnectivityManager;
    import android.net.wifi.WifiManager;
    import android.os.Bundle;
    import android.provider.Settings;
    import android.view.View;
    import android.widget.Toast;
    
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.TextView;
    import android.widget.Button;
    import android.widget.ProgressBar;
    
     
    
    public class MainActivity extends Activity 
    {
        public TextView LaTestText;
        private Button BtScanWiFi;
        private Button BtSelectAccessPoint;
        private ProgressBar ProgressBar1;
        public Spinner WiFiChannels;
        
        WifiManager WiFiManager;
        BroadcastReceiver WiFireceiver;
        WiFiReceiver TextReceiver;
         
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            initControls();
            WiFiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
            if (WiFireceiver == null)
            	WiFireceiver = new WiFiReceiver(this);
            registerReceiver(WiFireceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        }
           
        @Override
        public void onStop(){
            super.onStop();
            finish();
        }
        
        
        private void initControls()
        {
        	LaTestText = (TextView)findViewById(R.id.LaTestText);
        	BtSelectAccessPoint = (Button)findViewById(R.id.BtSelectAccessPoint);
        	BtScanWiFi = (Button)findViewById(R.id.BtScanWiFi);
        	ProgressBar1 = (ProgressBar)findViewById(R.id.ProgressBar1);
        	WiFiChannels = (Spinner)findViewById(R.id.WiFiChannels);
        	
        	ProgressBar1.setVisibility(ProgressBar.INVISIBLE);
        	
        	BtScanWiFi.setOnClickListener(new Button.OnClickListener() { public void onClick (View v){ ScanWiFi (); }});
        	BtSelectAccessPoint.setOnClickListener(new Button.OnClickListener() { public void onClick (View v){ SelectWiFi (); }});	
        	WiFiChannels.setOnItemSelectedListener(
        			new OnItemSelectedListener()
        			{
        				public void onItemSelected(AdapterView<?> parent,View View, int pos, long id) 
        				{
        					// something
        				}
        				public void onNothingSelected(AdapterView parent) 
        				{
        					// Do nothing.
        				}
        			}
        	);
        	
        }
        
        
    
        
        private void ScanWiFi()
        {
        	ConnectivityManager manager = (ConnectivityManager)getSystemService(MainActivity.CONNECTIVITY_SERVICE);
        	
        	Boolean is3G = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
            Boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
    
            String ConnectionInfo;
    		
            if(is3G)
            {
                ConnectionInfo = "Your current InternetConnectionType is  ''3G'' please set to WiFi !!!";
                Toast.makeText(getApplicationContext(), ConnectionInfo, Toast.LENGTH_LONG).show();
                startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
            }
            else 
            if(isWifi)
            {
            	ConnectionInfo = "Your current InternetConnectionType is  ''WiFi/W-Lan''" ;
                  Toast.makeText(getApplicationContext(), "Scanning for AccessPoints ...", Toast.LENGTH_LONG).show();
                  WiFiManager.startScan();    
                
            	
            }
            else
            {
            	ConnectionInfo = "Your are currently not connectet to WiFi/W-Lan" ;
                
            Toast.makeText(getApplicationContext(), ConnectionInfo, Toast.LENGTH_LONG).show();
                startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
                
            }
            
            
        }
        
        private void SelectWiFi()
        {
    		//
        }
    
          
        }
        
    
    WiFiReceiver.java:

    Code:
    package com.wifi;
    
    import java.util.List;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.net.wifi.ScanResult;
    import android.util.Log;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    
    
    public class WiFiReceiver extends BroadcastReceiver{
    	private MainActivity mainactivity;
    	public StringBuilder sb;
    	public List<ScanResult> APList;
        public WiFiReceiver(MainActivity mainactivity)
        {
        	super();
        	this.mainactivity = mainactivity;
        }  
        @Override
        public void onReceive(Context c, Intent intent) 
        {     
          APList = mainactivity.WiFiManager.getScanResults();
          for(int i = 0; i < APList.size(); i++)
          {
              sb.append(new Integer(i+1).toString() + ".");
              sb.append(( APList.get(i)).toString());
              sb.append("\\n");
          }
          String info=" "+APList.size();
          Log.i("wifiScan", info);    
          mainactivity.LaTestText.setText(info);
          
        
          
          //mainactivity.LaTestText.setText(sb);
        }
    
        
        
    }

    AndroidManifest:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.wifi"
          android:versionCode="1"
          android:versionName="1.0">
        <application android:icon="@drawable/icon" android:label="WiFi">
            <activity android:name="MainActivity"
                      android:label="WiFir">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    		<activity android:name="MainListActivity">
    		
            </activity>
        </application>
        <uses-sdk android:minSdkVersion="9" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    </manifest>
    wenn ich nun die app auf meinem GalaxySII ausführe und auf "scann wifi" drücke bekomme ich nach ca. 2-5 sekunden ein fenster "Sorry! The application stopped unexpected." und meine app schließt sich -.-

    wenn ich "startscan()" auskommentire läuft alles wunderbar
    was mache ich falsch ?

    danke das ich eure zeit in anspruch nehmen darf :sneaky:

    (ps: an den coder der seite : mit meinem google chrome (13.0.782.215 m) war bei der registrierung das feld "Benutzername" nicht sichtbar konnte mich also mit chrome nicht hier registrieren erst mit firefox )
     
    Zuletzt bearbeitet: 01.09.2011
  2. swordi, 01.09.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Eclipse - Logcat ist dein freund
     
  3. Lonioo, 01.09.2011 #3
    Lonioo

    Lonioo Threadstarter Neuer Benutzer

    im emulator funktioniert wlan nicht also kann ich das verhalten meines programms nicht prüfen was soll ich dann also mit logcat ?
     
  4. maniac103, 02.09.2011 #4
    maniac103

    maniac103 Android-Lexikon

    Du kannst das Programm auch via Eclipse auf deinem Telefon ausführen. Logcat gibt dir dann die komplette Exception. Geht auch ohne Eclipse via 'adb logcat'.

    Sent from my MB525 using Tapatalk
     
  5. sixi, 02.09.2011 #5
    sixi

    sixi Erfahrener Benutzer

    In deinem WiFiReceiver wird dir auf jedenfall 'ne Nullpointer um die Ohren fliegen.
    Dein "public StringBuilder sb;" wird nirgendwo initialisiert.

    Zudem wird das "mainactivity.LaTestText.setText(info);" 'nen Problem werden, da du dich mit der "onReceive" Methode nicht im UI-Thread bewegst. In deinem Fall wäre da die runOnUiThread-Methode angebracht :)
     
  6. Lonioo, 02.09.2011 #6
    Lonioo

    Lonioo Threadstarter Neuer Benutzer

    ??-?? ??:??:??.???: INFO/<unknown>(<unknown>): Unable to open log device '/dev/log/main': No such file or directory

    ich nutze aber auch die rom hier
     
  7. sixi, 02.09.2011 #7
    sixi

    sixi Erfahrener Benutzer

    Hier:
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
App-Wunsch: Smartcard-App für Bluetooth-Leser Android App Entwicklung 19.02.2019
Theme Änderung - Android Studio Android App Entwicklung 25.01.2019
App funktioniert unter Android 7 und höher aber nicht drunter, ich verzweifel Android App Entwicklung 07.01.2019
Alle Bilder meiner App sind über Nacht verschwunden Android App Entwicklung 17.12.2018
Eigene App auf Smartwatch installieren klappt nicht Android App Entwicklung 08.11.2018
In App Käufe programmieren Android App Entwicklung 04.11.2018
mindest API ist 26?! Android App Entwicklung 01.11.2018
Android App - Objekt bewegt sich nach Handyneigung Android App Entwicklung 30.10.2018
Wie float wert von android App an desktop Applikation per Bluetooth senden? Android App Entwicklung 29.10.2018
Neigungssensor ansprechen und wert ausgeben in App Android App Entwicklung 14.10.2018
Du betrachtest das Thema "Wifi "startscan()" führt dazu das meine app crasht" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.