Реализация деятельности, как использовать методы в банке в Android - PullRequest
3 голосов
/ 27 апреля 2011

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 16 мая 2011

Ваш класс является действием и имеет метод 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).

0 голосов
/ 16 мая 2011

добавьте

this.mMacAddress = MACAddress;

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

0 голосов
/ 09 мая 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...