2015-11-02 70 views
-1

我正在開發一個應用程序,它向服務器發送一些參數,例如密鑰,請求類型等,並且我在NetworkManager中設置了所有連接代碼的公用參數。有一些常見的參數像生成隨機trid,getMac,getImei。 問題是因爲我的網絡管理器是一類在這裏,我得到一個錯誤:Android網絡服務,包括IMEI,參數中的Mac地址

我在NetworkManger的的AsyncTask下面的代碼:)

inputParams.put("imei", getIMEINumber());//for adding the param 



private String getIMEINumber() { 
      // TODO Auto-generated method stub 
      TelephonyManager telephonymanager = (TelephonyManager)main 
        .getSystemService(Context.TELEPHONY_SERVICE); 
      String uid = telephonymanager.getDeviceId(); 
      // telephonymanager.getSimSerialNumber() 
      Log.v("vas", "DeviceId: " + uid); 
      return uid; 
     } 

方法getActivity(未定義的類型。

而當我將NetworkManager轉換爲Fragment時,我得到一個運行時異常。

E/AndroidRuntime(624): Caused by: java.lang.IllegalStateException: System services not available to Activities before onCreate() 

任何幫助將不勝感激。

+0

你在哪裏把這個'TelephonyManager telephonymanager =(TelephonyManager)getActivity( ) .getSystemService(Context.TELEPHONY_SERVICE);'在activity或fragment中? –

+0

沒有在我的NetworkManager.class裏,我已經把所有的常見參數 –

+0

男人我說在哪個方法?你能否把你的活動或片段? –

回答

0

裏面你NetworkManager的類寫的IMEI號碼

public static String getIMEInumber(Context context) { 
    String identifier = null; 
    TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
    if (tm != null) 
     identifier = tm.getDeviceId(); 
    if (identifier == null || identifier.length() == 0) 
     identifier = Secure.getString(context.getContentResolver(), 
       Secure.ANDROID_ID); 

    return identifier; 
} 

此方法,並調用此方法像這樣在您需要。在此背景下很重要..請確保您有一個背景下,不爲空..

String imei=NetworkManager.getIMEInumber(context); 

希望工程..

+0

感謝您的支持兄弟! 雖然 –

+0

仍然得到相同的迴應可能是你的onCreate()方法...你在哪裏調用asynctask方法? –