1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  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
[OFFEN] Kostenpflichtige App für Beta-Test hochladen Android App Entwicklung 13.09.2017
[OFFEN] App startet nicht... Android App Entwicklung 10.09.2017
[OFFEN] Sind Notifications in einer Webview App möglich? Android App Entwicklung 10.09.2017
[OFFEN] Möchte eine App für Entrümpelungen entwickeln. Android App Entwicklung 08.09.2017
[ERLEDIGT] Alpha-Version meiner App nicht mit S8 kompatibel Android App Entwicklung 06.09.2017
[ERLEDIGT] Verbindung zu MS SQL DB von App aus möglich? Android App Entwicklung 05.09.2017
[OFFEN] App schließt nach Öffnen sofort Android App Entwicklung 04.09.2017
[ERLEDIGT] MIT APP Inventor paralleler Tastendruck Android App Entwicklung 23.08.2017
[GESCHLOSSEN] Random ListItem ausgeben funktioniert nicht mehr Android App Entwicklung 13.08.2017
[OFFEN] Bild per Intent an ListView übergeben und anzeigen Android App Entwicklung 13.08.2017
Du betrachtest das Thema "Wifi "startscan()" führt dazu das meine app crasht" im Forum "Android App Entwicklung",