#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
разрешить extendMacIdTesting
. Затем вы могли бы вызватьgetMacAddress()
. -
Код в
MacIdTesting
ошибочен: вы присваиваете MAC-адрес некоторой локальной переменной, а поле в объекте никогда не устанавливается. -
Перед написанием библиотеки я бы посоветовал подробнее ознакомиться с жизненным циклом Android и, возможно, с Java.
Комментарии:
1. смотрите скриншот выше, как можно создать файл jar в этом jar, как можно использовать другой класс, пожалуйста, дайте мне предложение
Ответ №3:
Добавить
this.mMacAddress = MACAddress;
в качестве последней строки для метода onCreate() MacTesting.