0

だから、私は Android にまったく慣れておらず、以前の Java の経験が限られているので、ご容赦ください。私は Android アプリでタイプ WifiManager のオブジェクトを作成しようとしていますが、WifiManager オブジェクトを逐語的に作成することを他の人が推奨している行があります。

WifiManager wifi =  mContext.getSystemService(Context.WIFI_SERVICE);

私のプログラムで。現在、Eclipse は mContext.GetSystemService などの部分に下線を引いており、エラータイプが一致しません。オブジェクトから WifiManager に変換できません。

今、私は以下を使用してリターンを再キャストしようとしました:

(WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);

これはコンパイルされますが、実行するとjava.lang.NullPointerExceptionが発生します。

これについての考えは大歓迎です!

アップデート*

だから私はセットアップしました

Context mContext; 

私のメインクラスで

次に、ブロードキャストを使用して、ネットワーク上の SQL サーバーのアドレスを見つけようとしています。ブロードキャストを送信して機能させようとしている段階にあるので、コードはちょっと面倒です。しかし、ここに機能があります。

public void findSQL()
{
    int PORT = 1433;

    try
    {
        byte buff[] = new byte[1024];
        DatagramSocket sock = new DatagramSocket(PORT); 
        sock.setBroadcast(true);

        // Create and send the broadcast packet
        DatagramPacket dp = new DatagramPacket(buff, 7, getBroadcastAddress(), PORT);

        sock.send(dp);

        DatagramPacket dp1 = new DatagramPacket(buff, buff.length);

        sock.receive(dp1);

        sock.close();
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}
InetAddress getBroadcastAddress() throws IOException {  
    WifiManager wifi =  (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
    DhcpInfo dhcp = wifi.getDhcpInfo();

    System.out.println(dhcp.toString());

    if(dhcp==null)
        return InetAddress.getByAddress(null);

    int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask;

    byte[] quads = new byte[4];
    for (int k = 0; k < 4; k++)
    {
        quads[k] = (byte) ((broadcast >> k * 8) & 0xFF);
    }

    return InetAddress.getByAddress(quads);
}

2 回目の編集*

コードの前半で、次のように定義しました。

    @SuppressWarnings("unused")
class MSSQL_DB
{
    Context mContext;
    public void dbConnect(String db_connect_string, 
            String db_userid, String db_password)
    {
        try
        {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            Connection conn = DriverManager.getConnection(db_connect_string,
                    db_userid, db_password);
            System.out.println("Connected");

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

残念ながら、「コンテキスト」が実際に何をするのか、それを正しく宣言する方法、およびそのメソッドを使用する方法の全体的な概念は、まだ完全に理解していないはずです.

4

2 に答える 2

2

ほとんどの場合、mContext は null です。そうでない場合

例外のログをもっと投稿してください..そしてもっと多くのコードを投稿してください...

于 2012-07-13T20:50:51.293 に答える
1

マニフェストに android.permission.ACCESS_WIFI_STATE がありますか?

于 2012-07-13T21:06:43.190 に答える