0

Android アプリをコーディングしていますが、ブラウザーを呼び出してストリームを表示する前にワイヤレスが接続されていることを確認したいのですが、ボタンをクリックすると、アプリケーションの実行が停止したと言って閉じます。Android マニフェスト ファイルにアクセス許可を設定しました。これが私のコードです。Networking という別のクラスでこれを行います。

public class Networking extends Main {

    public boolean  isWirelessConnected()
    {
        cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo mwifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    if(mwifi == null)
        return false;
    else 
        return true;
    }
    public void messageDialog()
    {
        AlertDialog.Builder alrtBuild = new AlertDialog.Builder(this);
        alrtBuild
        .setTitle("Wireless")
        .setMessage("You are not Connected would you like to Connect to wireless?")
        .setNegativeButton("Yes", new  DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                WifiManager wifiManger = (WifiManager) getSystemService(Context.WIFI_SERVICE);
                wifiManger.setWifiEnabled(true);

            }
        })
        .setNegativeButton("No", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();

            }
        });
        AlertDialog alert = alrtBuild.create();
        alert.show();


    }
}

そして、私が持っているメインクラスで

Networking netwrk = new Networking();
if(netwrk.wireless().isConnected())
{
    Intent brwoserIntent = new Intent(Intent.ACTION_VIEW,
             Uri.parse("http://www.own3d.tv/HotshotGG"));
    startActivity(brwoserIntent);               
}

ボタンを押したときにプログラムがスローするエラーは次のとおりです

12-08 19:51:16.904: E/AndroidRuntime(1549): FATAL EXCEPTION: main
12-08 19:51:16.904: E/AndroidRuntime(1549): java.lang.IllegalStateException: Could not execute method of the activity
12-08 19:51:16.904: E/AndroidRuntime(1549):     at android.view.View$1.onClick(View.java:3597)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at android.view.View.performClick(View.java:4202)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at android.view.View$PerformClick.run(View.java:17340)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at android.os.Handler.handleCallback(Handler.java:725)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at android.os.Handler.dispatchMessage(Handler.java:92)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at android.os.Looper.loop(Looper.java:137)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at android.app.ActivityThread.main(ActivityThread.java:5039)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at java.lang.reflect.Method.invokeNative(Native Method)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at java.lang.reflect.Method.invoke(Method.java:511)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at dalvik.system.NativeStart.main(Native Method)
12-08 19:51:16.904: E/AndroidRuntime(1549): Caused by: java.lang.reflect.InvocationTargetException
12-08 19:51:16.904: E/AndroidRuntime(1549):     at java.lang.reflect.Method.invokeNative(Native Method)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at java.lang.reflect.Method.invoke(Method.java:511)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at android.view.View$1.onClick(View.java:3592)
12-08 19:51:16.904: E/AndroidRuntime(1549):     ... 11 more
12-08 19:51:16.904: E/AndroidRuntime(1549): Caused by: java.lang.IllegalStateException: System services not available to Activities before onCreate()
12-08 19:51:16.904: E/AndroidRuntime(1549):     at android.app.Activity.getSystemService(Activity.java:4463)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at nc.prog1415.Networking.isWirelessConnected(Networking.java:14)
12-08 19:51:16.904: E/AndroidRuntime(1549):     at nc.prog1415.Main.hotshotBtns(Main.java:109)
12-08 19:51:16.904: E/AndroidRuntime(1549):     ... 14 more
4

2 に答える 2

0

ほとんどの場合netwrk.wireless()、null が返され、NullPointerException.

私はあなたのwireless()方法をisWirelessConnected()次のように変更します

public boolean isWirelessConnected() {
    ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
       NetworkInfo mwifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    if ( mwifi == null )
        return false;
    else
        return mwifi.isConnected();
}

次に、メインクラスで、単に

Networking netwrk = new Networking();
if( netwrk.isWirelessConnected() ) {
    Intent brwoserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.own3d.tv/HotshotGG"));
    startActivity(brwoserIntent); 
}
于 2012-12-08T19:37:17.670 に答える
0

LogCat から:

以前はアクティビティで利用できなかったシステム サービスonCreate()

このエラーは一目瞭然なので、コードを次のように変更します。

ConnectivityManager cm; 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    ...
}

追加
あなたのネットワーキングはメインを拡張します。これはアクティビティであると想定しています。行っていることに対して完全なアクティビティは必要ないため、別の戦術を取る必要があります。代わりに、コンストラクターで Networking a Context を渡す必要があります。

public class Networking {
    Context context;

    public Networking(Context con) {
        context = con;
    }

    public boolean isWirelessConnected()
    {
        cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
        NetworkInfo mwifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if(mwifi == null)
            return false;
        else 
            return mwifi.isConnectedOrConnecting();
    }

    // etc
}

context.getSystemService()ダイアログの作成中にもこれを行う必要があることに注意してください。

このメソッドの使用方法を変更します。

Networking netwrk = new Networking(this);
if(netwrk.isWirelessConnected()) 
于 2012-12-08T20:11:19.987 に答える