Wifi "startscan()" führt dazu das meine app crasht

L

Lonioo

Neues Mitglied
0
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:
Eclipse - Logcat ist dein freund
 
im emulator funktioniert wlan nicht also kann ich das verhalten meines programms nicht prüfen was soll ich dann also mit logcat ?
 
Lonioo schrieb:
im emulator funktioniert wlan nicht also kann ich das verhalten meines programms nicht prüfen was soll ich dann also mit logcat ?

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

ich nutze aber auch die rom hier
 
Hier:
If you are a developer or want to re-enable logcat for whatever reason, do this:

adb shell
su
mount -o remount,rw /system
echo ANDROIDLOGGER >> /system/etc/tweaks.conf
mount -o remount,ro /system

Reboot and you should have it enabled.

Disclaimer: Use at your own risk!
 

Ähnliche Themen

Manny87
  • Manny87
Antworten
11
Aufrufe
157
swa00
swa00
R
  • Robby1950
2
Antworten
23
Aufrufe
997
Robby1950
R
netfreak
  • netfreak
Antworten
10
Aufrufe
451
netfreak
netfreak
Zurück
Oben Unten