2013-06-27 82 views
0

我收到兩個錯誤,說明swappedMdn無法在嘗試爲swappedMdn返回值時解析爲變量。swappedMdn無法解析爲變量

我不確定我在做什麼錯誤,因爲它出現(對我)我正在嘗試,保存並正確地獲取swappedMdn - 但沿線的某處出錯了。

任何幫助,非常感謝。

SNIPPET 1:(MDN值被建立在這裏)

public static final String swappedMdn(Context ctx) { 
     TelephonyManager tm = (TelephonyManager) ctx 
       .getSystemService(Context.TELEPHONY_SERVICE); 
     // Extract the phone number from the TelephonyManager instance 
     String mdn = tm.getLine1Number(); 
     // Insure MDN is 10 characters 
     if (mdn.length() < 10 || mdn == null) 
      mdn = "0000000000"; 
     // Extract last 10 digits of MDN 
     if (mdn.length() > 10) 
      mdn = mdn.substring(mdn.length() - 10, mdn.length()); 
     char data[] = mdn.toCharArray(); 
     char digit; 
     for (int index = 0; index < mdn.length() - (mdn.length()) % 2; index += 2) { 
      digit = data[index]; 
      data[index] = data[index + 1]; 
      data[index + 1] = digit; 

      Intent i = new Intent(ctx, DataCountService.class); 


       SharedPreferences settings = ctx.getSharedPreferences(Constants.PREFS_NAME, 0); 
       Editor editor = settings.edit(); 
       editor.putString(Integer.toString(0), swappedMdn); 
       editor.commit(); 

     } 

     return String.valueOf(data); 

    } 

SNIPPET 2:(MDN值被檢索這裏)

String info = String.format("USI%sCN%s,WN%s", tag + status 
          + tag + settings.getString(Integer.toString(0), swappedMdn) + tag + DToDevice + tag, mobileStr, 
          totalStr + settings.getString("last_month", "0")); 

完整源:

public class DataCountService extends Service { 
String text = "USR;1"; 
String ERROR = Constants.PREFS_NAME; 
    private Timer timer = new Timer(); 
private long period; 
private long delay_interval; 

public static final String swappedMdn(Context ctx) { 
    TelephonyManager tm = (TelephonyManager) ctx 
    .getSystemService(Context.TELEPHONY_SERVICE); 
    // Extract the phone number from the TelephonyManager instance 
    String mdn = tm.getLine1Number(); 
    // Insure MDN is 10 characters 
    if (mdn.length() < 10 || mdn == null) 
    mdn = "0000000000"; 
    // Extract last 10 digits of MDN 
    if (mdn.length() > 10) 
    mdn = mdn.substring(mdn.length() - 10, mdn.length()); 
    char data[] = mdn.toCharArray(); 
    char digit; 
    for (int index = 0; index < mdn.length() - (mdn.length()) % 2; index += 2) { 
    digit = data[index]; 
    data[index] = data[index + 1]; 
    data[index + 1] = digit; 

    Intent i = new Intent(ctx, DataCountService.class); 


    SharedPreferences settings = ctx.getSharedPreferences(Constants.PREFS_NAME, 0); 
    Editor editor = settings.edit(); 
    editor.putString(Integer.toString(0), swappedMdn); 
    editor.commit(); 

    } 

    return String.valueOf(data); 

} 


private Intent getIntent() { 
    // TODO Auto-generated method stub 
    return null; 
    } 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.d(Constants.TAG, "Logging Service Started"); 
    // super.onStartCommand(intent, flags, startId); 

    Bundle extras = intent.getExtras(); 

    if (intent == null) { 
    // Exit gracefully is service not started by intent 
    Log.d(Constants.TAG, "Error: Null Intent"); 
    } else { 

    if (extras != null) { 
    text = extras.getString(Constants.DM_SMS_CONTENT); 
    // check for Enable or Disable Value - if set to enable 
    // check for Enable or Disable Value - if set to enable 
    if (extras.getString(Constants.DM_SMS_CONTENT).contains(
     "//USR;1")) { 

    // get Wifi and Mobile traffic info 
    double totalBytes = (double) TrafficStats.getTotalRxBytes() 
     + TrafficStats.getTotalTxBytes(); 
    double mobileBytes = TrafficStats.getMobileRxBytes() 
     + TrafficStats.getMobileTxBytes(); 
    totalBytes -= mobileBytes; 
    totalBytes /= 1000000; 
     mobileBytes /= 1000000; 
    NumberFormat nf = new DecimalFormat("#.###"); 

    Intent i = new Intent(this, DataCountService.class); 

    StartActivity(i); 

     Intent MDN = new Intent(this, MDNByteswapService.class); 

    StartActivity(MDN); 

    // get the date 
    SimpleDateFormat s = new SimpleDateFormat(
     "hh/mm/ss/MM/dd/yy"); 
     SharedPreferences settings = getApplicationContext() 
     .getSharedPreferences(Constants.PREFS_NAME, 0); 
    String tag = ";"; 


    //String mdn = extras.getString(DataCountUtilities.swappedMdn(this)); 
     String mobileStr = nf.format(mobileBytes); 
    String totalStr = nf.format(totalBytes); 
    String DToDevice = s.format(new Date()); 
    String status = (settings.getString("status", "0")); 
     String info = String.format("USI%sCN%s,WN%s", tag + status 
     + tag + settings.getString(Integer.toString(0), swappedMdn) + tag + DToDevice + tag, mobileStr, 
     totalStr + settings.getString("last_month", "0")); 

    info = "USI" + info.replace("USI", ""); 
    // info = (info.replace("CN", "CO")).replace("WN", "WO"); 
    StringBuilder b = new StringBuilder(info); 
     b.replace(info.lastIndexOf("CN") - 1, 
     info.lastIndexOf("CN") + 2, "CO"); 
    b.replace(info.lastIndexOf("WN") - 1, 
     info.lastIndexOf("WN") + 2, "WO"); 
     info = b.toString(); 

    // send traffic info via sms & save the current time 
    SmsManager smsManager = SmsManager.getDefault(); 
    if (Config.DEVELOPMENT) { 
     String shortCode = settings.getString(
     Constants.PREFS_KEY_SHORT_CODE, 
     Constants.DEFAULT_SHORT_CODE); 
     smsManager.sendTextMessage(shortCode, null, info, null, 
     null); 
     // set status to enabled 

     Editor editor = settings.edit(); 
     editor.putString("status", "1"); 
     editor.commit(); 
     editor.putLong("smstimestamp", 
     System.currentTimeMillis()); 
     editor.commit(); 

    } else { 
     SmsManager ackSMS = SmsManager.getDefault(); 
     smsManager.sendTextMessage(
     Constants.DEFAULT_SHORT_CODE, null, info, null, 
     null); 
    } 

    // check for Enable or Disable Value - if set to disable 
    } 
    } else if (extras.getString(Constants.DM_SMS_CONTENT).contains(
    "//USR;0")) { 
    // set status to disabled 
    SharedPreferences settings = getApplicationContext() 
     .getSharedPreferences(Constants.PREFS_NAME, 0); 
    Editor editor = settings.edit(); 
    editor.putString("status", "0"); 
    editor.commit(); 
    stopSelf(); 

    // check for Enable or Disable Value - if set to any other 
    // character 
    } 

    return START_STICKY; 
    } 
    return startId; 
    } 

private void StartActivity(android.content.Intent i) { 
    // TODO Auto-generated method stub 

} 

private Intent Intent() { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public void onCreate() { 

    if (Config.DEVELOPMENT) { 

    period = Constants.PERIOD; 
    delay_interval = Constants.DELAY_INTERVAL; 

    } else { 
    Bundle extras = getIntent().getExtras(); 
    period = Constants.DEBUG_PERIOD; 
    delay_interval = Constants.DEBUG_DELAY_INTERVAL; 
    } 
    startServiceTimer(); 
} 

private void startServiceTimer() { 
    timer.schedule(new TimerTask() { 
    public void run() { 

    SharedPreferences settings = getApplicationContext() 
     .getSharedPreferences(Constants.PREFS_NAME, 0); 
    if (settings.getString("status", "0").equals(1)) { 

    // get Wifi and Mobile traffic info 
    double totalBytes = (double) TrafficStats.getTotalRxBytes() 
     + TrafficStats.getTotalTxBytes(); 
     double mobileBytes = TrafficStats.getMobileRxBytes() 
     + TrafficStats.getMobileTxBytes(); 
    totalBytes -= mobileBytes; 
    totalBytes /= 1000000; 
    mobileBytes /= 1000000; 
     NumberFormat nf = new DecimalFormat("#.###"); 
    String tag = ";"; 
    String mobileStr = nf.format(mobileBytes); 
    String totalStr = nf.format(totalBytes); 
    String info = String.format("CO%s,WO%s", tag, mobileStr, 
     totalStr); 
    // save Network and Wifi data in sharedPreferences 

    SharedPreferences cnwn = getApplicationContext() 
     .getSharedPreferences(Constants.PREFS_NAME, 0); 
    Editor editor = cnwn.edit(); 
     editor.putString("last_month", info); 
    editor.commit(); 

    // 

    // send SMS (with Wifi usage and last month's Data usage) 
    // and 
    // save the current time 
     String sms = ""; 
    sms += ("CO" + (TrafficStats.getMobileRxBytes() + TrafficStats 
     .getMobileTxBytes())/1000000); 
    sms += ("WO" + (TrafficStats.getTotalRxBytes() 
     + TrafficStats.getTotalTxBytes() - (TrafficStats 
     .getMobileRxBytes() + TrafficStats 
     .getMobileTxBytes()))/1000000); 

    SmsManager smsManager = SmsManager.getDefault(); 
     if (Config.DEVELOPMENT) { 
     String shortCode = settings.getString(
     Constants.PREFS_KEY_SHORT_CODE, 
     Constants.DEFAULT_SHORT_CODE); 
     smsManager.sendTextMessage(shortCode, null, 
     sms + cnwn.getString("last_month", ""), null, 
     null); 
     editor.putLong("smstimestamp", 
     System.currentTimeMillis()); 
     editor.commit(); 
     } else { 
     SmsManager ackSMS = SmsManager.getDefault(); 
     smsManager.sendTextMessage(
     Constants.DEFAULT_SHORT_CODE, null, 
     sms + cnwn.getString("last_month", ""), null, 
     null); 
    } 

    } 
    } 
    }, delay_interval, period); 

} 

@Override 
public IBinder onBind(Intent intent) { 

    // TODO Auto-generated method stub 

    return null; 

} 

@Override 
public boolean onUnbind(Intent intent) { 

    // TODO Auto-generated method stub 

    return super.onUnbind(intent); 

} 

    } 
+0

可能重複繼續返回零 - 無法檢索'數據'字符串的值](http://stackoverflow.com/questions/17349659/sharedpreferences-value-continues-to-return-as-zero-cannot-retrieve-value-of) – kosa

+0

這將是一件容易得多的如果你首先將你的代碼片段縮減到最相關的部分(比如你嘗試使用vavriable和它被聲明/初始化的地方),我們會提供幫助。我甚至沒有在任何地方看到它。你能指出你認爲你在做什麼嗎? – codeMagic

+0

更新! (謝謝你codeMagic) – user2528574

回答

0

這裏

editor.putString(Integer.toString(0), swappedMdn); 

你試圖使用這個「變量」swappedMdn這實際上是一個函數,你在裏面......不是varibale。我不知道你的意思是infomdn或其他什麼,但swappedMdn是不是一個變量它的功能。

而且,不是這個問題,但我不知道爲什麼你必須接受一個Context爲參數的函數,因爲Service有[SharedPreferences值的自己的Context

+0

好吧 - 公共靜態最終字符串swappedMdn讓我覺得我可以使用swappedMdn作爲一個字符串。如何在MDN被字節切換之後檢索MDN的值?那會是'數據'嗎? – user2528574

+0

可能。調試,看看這是否是你期望的值 – codeMagic

+0

發生了一些奇怪的事情 - 我在下面一行設置了一個斷點:TelephonyManager tm =(TelephonyManager)ctx 而不是在我開始調試時移動到那條線我得到一個錯誤,指出類文件編輯:來源未找到 任何想法可能是什麼原因造成的? – user2528574