簡體   English   中英

實施活動如何在 android 中使用 jar 中的方法

[英]Implementing activity how to use methods in jar in android

i am creating own framework api (telephone services related api) i am creating one library app this library app to create myjar.jar i am developing another application just i am adding asset folder this myjar.jar and configure this jar adding buildpath in coding importing package

此應用程序運行到真實設備:

MacTesting mp = new MacTesting();
mp.getMacAddress();
Log.v("1111","this is mac add"+ mp.getMacAddress());

結果是 null

public class MacIdTesting extends Activity implements Parcelable
{
    public static final String KEY_WIFI_MAC_ADDRESS = null;

    public  static final String READ_PHONE_STATE = null;

    /** Called when the activity is first created. */
       public String mMacAddress;
       public String phonenumber;
       void setMacAddress(String macAddress) {
           this.mMacAddress = macAddress;
       }

       public String getMacAddress() {
           return mMacAddress;
       }
       public String getLine1Number() 
       {
       ContextWrapper mContext = null;
       mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
           MacIdTesting mPhone = null;
        return mPhone.getLine1Number();
       }

      public void onCreate(Bundle savedInstanceState) 
      {
        super.onCreate(savedInstanceState);

        WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        WifiInfo wifiInfo = manager.getConnectionInfo();
        String MACAddress = wifiInfo.getMacAddress(); 
        System.out.println("macsddress "+MACAddress);
       }

    @Override
    public int describeContents()
    {
        // TODO Auto-generated method stub
        return 0;


    }
    @Override
    public void writeToParcel(Parcel dest, int flags)
    {
        // TODO Auto-generated method stub
        dest.writeString(mMacAddress);  
    }
}

看到這個截圖

如何解決這個問題

您的 class 是一個活動,具有 onCreate 方法,但不是構造函數。

我將 onCreate 方法更改為這樣的構造函數(並刪除extends activity ):

 public MacIdTesting(Context ctx) 
      {
        WifiManager manager = (WifiManager) ctx.getSystemService(Context.WIFI_SERVICE);
        WifiInfo wifiInfo = manager.getConnectionInfo();
        mMacAddress = wifiInfo.getMacAddress();
       }

並從這樣的活動中調用它:

MacTesting mp = new MacTesting(this);

另外,我會保留private成員而不是public成員( private String mMacAddress )。

有一些問題:

  • MacIdTesting是一個 Activity,但您使用它AndroidMac class 本身就是一個 Activity。 因此MacIdTesting的生命周期方法不會被調用。 例如,您可以讓AndroidMac擴展MacIdTesting 然后你可以調用getMacAddress()

  • MacIdTesting中的代碼有問題:您將 MAC 地址分配給某個局部變量,而 object 中的字段永遠不會被設置。

  • 在編寫庫之前,我建議閱讀更多關於 android 生命周期以及可能關於 Java 的信息。

添加

this.mMacAddress = MACAddress;

作為 MacTesting 的 onCreate() 方法的最后一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM