2012-05-30 3 views
0

jar 파일이 될 Android 프로젝트 용 SDK를 만들려고합니다.Android 맞춤 라이브러리 사용 방법

문제는 라이브러리에 장치의 MAC 주소를 반환하는 기능이 있다는 것입니다. 이를 위해 나는 사용해야합니다

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

이 명령은 내 SDK 클래스는 액티비티 클래스에서 상속되고 onCreate 기능을 구현할 것을 요구한다.

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; 

     } 
} 

* 문제가 해결되었습니다 * *

내가 맥 주소 나 imei를 얻을 수없는 이유는 wifi 서비스 나 전화 서비스를 사용하기 위해서 jar 파일을 소비 한 클래스에서 컨텍스트 개체를 전달해야했기 때문입니다.

나는 코드를 편집했다.

+0

질문에 많은 의미가 없습니다. 더 잘 설명해보십시오. –

+0

내가 다시 말하려고하자. 내가 만들고있는 라이브러리가 있는데, lib라고 부를 수있다. 안드로이드 프로젝트에서 'P'라고 부를 수 있습니다. P는 'lib'을 사용하고 있으며 'lib'의 멤버 인 MAC 주소를 얻으려고합니다. 나는 그렇게하지 못하고 응답으로 null을 얻는다. –

답변

0

onCreate 함수 내에서 호출하는 경우 아직로드가 완료되지 않았습니다. 따라서 시스템 서비스를 호출 할 수 없습니다.

+0

의미가 있습니다. :) onCreate 대신 onResume으로 이동하여 작동하는지 확인하겠습니다. –

+0

wifi 문을 onResume으로 이동하려고했습니다. 이제 오류가 발생하지 않습니다. 그러나 MAC 값은 null입니다. –

+0

'String mac = wm.getConnectionInfo(). getMacAddress();'에서 값을 가져 오는 중입니다. – dda

0

매니페스트에 WIFI 권한을 반드시 추가해야합니다. 그건 너의 null의 원인이 될 수도 있습니다.

+0

프로젝트에 wifi 권한을 추가했지만 라이브러리의 안드로이드 매니페스트를 프로젝트의 매니페스트와 충돌이 발생하여 라이브러리에 컴파일하지 않았습니다 (둘 다 같은 이름 임). –

관련 문제