2011-09-21 38 views
2

我正在學習android api的過程。然而,當我試圖獲取有關無線網絡信息我的程序意外關閉:當我嘗試getConnectionInfo時,程序意外關閉

這裏是代碼:

package com.example.helloandroid;  

import java.util.List; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.net.wifi.WifiConfiguration; 
import android.net.wifi.WifiInfo; 
import android.net.wifi.WifiManager; 
import android.content.BroadcastReceiver; 
import android.content.Context; 

public class HelloAndroid extends Activity { 
    /** Called when the activity is first created. */ 

    WifiManager wifi; 
    BroadcastReceiver receiver; 

    TextView textStatus; 
    Button buttonScan; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     TextView tv = new TextView(this); 
     tv.setText("Hello, Android"); 
     setContentView(tv); 

     wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
    // WifiInfo info = wifi.getConnectionInfo(); 
     // tv.append("\n\nWiFi Status: " + info.toString()); 

    } 
} 

上面運行的代碼,但只要我取消對該行: WifiInfo info = wifi.getConnectionInfo();

它說我的程序意外關閉。我不確定我做錯了什麼。任何幫助,將不勝感激。

我正在使用模擬器。

感謝

更新:如果我寫出來的WiFi OBJ:

wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
tv.append(wifi.toString()); 

應用程序運行和電視說:

android.net.wifi. 
[email protected] 

UPDATE: logcat的:

09-22 14:56:51.387: ERROR/AndroidRuntime(408): FATAL EXCEPTION: main 
09-22 14:56:51.387: ERROR/AndroidRuntime(408): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.helloandroid/com.example.helloandroid.HelloAndroid}: java.lang.SecurityException: WifiService: Neither user 10034 nor current process has android.permission.ACCESS_WIFI_STATE. 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at android.os.Looper.loop(Looper.java:123) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at java.lang.reflect.Method.invoke(Method.java:507) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at dalvik.system.NativeStart.main(Native Method) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408): Caused by: java.lang.SecurityException: WifiService: Neither user 10034 nor current process has android.permission.ACCESS_WIFI_STATE. 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at android.os.Parcel.readException(Parcel.java:1322) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at android.os.Parcel.readException(Parcel.java:1276) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at android.net.wifi.IWifiManager$Stub$Proxy.getConnectionInfo(IWifiManager.java:591) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at android.net.wifi.WifiManager.getConnectionInfo(WifiManager.java:605) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at com.example.helloandroid.HelloAndroid.onCreate(HelloAndroid.java:35) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
09-22 14:56:51.387: ERROR/AndroidRuntime(408):  ... 11 more 
+0

Logcat輸出會有幫助 – Knickedi

回答

3

不能肯定,如果它支持emmulator但在真實設備上,我認爲你需要有下列權限在您的清單:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 

如果你看logcat的輸出錯誤時,它關閉你應該看到沒有許可的效果......或者其他一些可以幫助別人提供一些指導的信息。請參閱:http://developer.android.com/guide/developing/tools/adb.html#logcat

0

我敢打賭,這是因爲你沒有在AndroidManifest.xml中設置權限。見here。但是,請記住,如果您發佈實際的異常消息,它會有幫助。

相關問題