0

jar ファイルになる SDK for Android プロジェクトを作成しようとしています。

私が抱えている問題は、ライブラリにデバイスの MAC アドレスを返す関数があることです。そのためには、次を使用する必要があります。

WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);

このコマンドでは、sdk クラスが Activity クラスから継承され、onCreate関数を実装する必要があります。

ライブラリへの参照を持つ別の Android プロジェクトからライブラリ (jar) を使用しようとすると、次のエラーが表示されます。

system service not available to activities before oncreate

私のコマンドでさえ、onCreate関数の中にあります。

誰かがそれを解決する方法を知っていますか? または、一部の Android サービス/機能を使用できるようにするために、別の方法で SDK を実装する必要がありますか?

ライブラリとプロジェクトの両方にサンプル コードを追加しました。

ライブラリ (jar ファイルにコンパイル):

public class DeviceDetails
{
    public String MACAddress="";
    public String IMEI="";

    public DeviceDetails(Context context)
    {

        WifiManager wm = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
        MACAddress=wm.getConnectionInfo().getMacAddress(); 
        TelephonyManager telephonyManager =            (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
        IMEI=telephonyManager.getDeviceId();
    }

}

そのライブラリを使用するプロジェクト

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


    DeviceDetails d=new DeviceDetails(getApplicationContext());
    String i=d.IMEI;
    String m=d.MACAddress;

      }
}

* 問題は解決しました* *

MAC アドレスまたは imi を取得できなかった理由は、wifi サービスまたは電話サービスを使用するために、jar ファイルを消費するクラスからコンテキスト オブジェクトを渡す必要があったためです。

コードを編集しました。

4

2 に答える 2

0

マニフェストに WIFI アクセス許可を追加することを忘れないでください。それがあなたのヌルの原因でもあるかもしれません。

于 2012-05-30T20:52:25.807 に答える
0

関数内でこれを呼び出している場合はonCreate、まだ読み込みが完了していません。したがって、システム サービスを呼び出すことはできません。

于 2012-05-30T20:11:45.517 に答える