Действие по реализации того, как использовать методы в jar в Android

#android #api #jar

#Android #API #jar

Вопрос:

я создаю собственный framework api (api, связанный с телефонными службами), я создаю одно библиотечное приложение, это библиотечное приложение для создания myjar.jar я разрабатываю другое приложение, просто добавляю папку ресурсов в эту myjar.jar и настройте этот jar, добавив путь сборки в кодирование, импортирующее пакет

это приложение запускается на реальном устройстве:

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

результат равен нулю

 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);  
    }
}
  

смотрите этот скриншот

как можно решить эту проблему

Комментарии:

1. Больше похоже, что у вас проблема с MacTesting, а не с включением вашего файла Jar.

2. Что такое null ? mp или mp.getMacAddress() ?

3. mp.getMacAddress () уже равен нулю, я импортировал файл jar, этот метод см. в файле jar этой библиотеки

4. я обновляю ссылку на скриншот выше вопроса

5. Пожалуйста, опубликуйте код из getMacAddress()

Ответ №1:

Ваш класс является activity и имеет метод 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 members вместо public ( private String mMacAddress ).

Ответ №2:

Есть некоторые проблемы:

  • MacIdTesting это действие, но вы используете его как AndroidMac класс, который сам по себе является действием. Поэтому методы жизненного цикла MacIdTesting вызываться не будут. Вы можете, например, AndroidMac разрешить extend MacIdTesting . Затем вы могли бы вызвать getMacAddress() .

  • Код в MacIdTesting ошибочен: вы присваиваете MAC-адрес некоторой локальной переменной, а поле в объекте никогда не устанавливается.

  • Перед написанием библиотеки я бы посоветовал подробнее ознакомиться с жизненным циклом Android и, возможно, с Java.

Комментарии:

1. смотрите скриншот выше, как можно создать файл jar в этом jar, как можно использовать другой класс, пожалуйста, дайте мне предложение

Ответ №3:

Добавить

 this.mMacAddress = MACAddress;
  

в качестве последней строки для метода onCreate() MacTesting.