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 ファイルを消費するクラスからコンテキスト オブジェクトを渡す必要があったためです。
コードを編集しました。