2013-06-27 21 views
-1

我有點困惑 - 我得到額外:無法getExtras();額外不能得到解決或無法在現場

Bundle extras = intent.getExtras(); 

然後我使用這些額外使用:

String mdn = extras.getString(DataCountUtilities.swappedMdn); 

但我m到處:

swappedMdn cannot be resolved or is not a field 



Any suggestions? 

全部來源:

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; 

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 = (settings.getString("mdn", 
      //   "some_default_value_here")); 

       String mdn = extras.getString(DataCountUtilities.swappedMdn); 
       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 + mdn + 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); 

} 

} 

數據計數工具:

public class DataCountUtilities extends Service { 

    // swap the content of a string by switching place 
    // each pair of consecutive characters 
    // If string length is odd last character is left in place 
    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); 
      // i.putExtra("key", mdn); 
      // tartActivity(i); 

      SharedPreferences settings = ctx.getSharedPreferences(Constants.PREFS_NAME, 0); 
      Editor editor = settings.edit(); 
      editor.putString("mdn", "mdn"); 
      editor.commit(); 

     } 

     return String.valueOf(data); 

    } 

    @Override 
    public IBinder onBind(Intent arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    // private void startActivity(Intent i) { 
    // TODO Auto-generated method stub 

} 
+1

究竟什麼是「swappedMdn」應該是什麼? –

+4

您的'DataCountUtilities'類沒有名爲'swappedMdn'的(公共可訪問)字段,就像編譯器錯誤信息告訴您的一樣。 – jlordo

+0

我相信它 - 看看(我上面發佈我的源代碼) – user2525683

回答

0

你的代碼是: -

String mdn = extras.getString(DataCountUtilities.swappedMdn); 

這是不對的。由於swappedmdn是一種方法。做這樣的事情: -

String mdn = extras.getString(DataCountUtilities.swappedMdn(Context context)); 
+0

謝謝!我實現了您的建議,並得到: 語法錯誤令牌「背景」,刪除此令牌\t 背景不能被解析爲一個變量\t ......有什麼建議? – user2525683

+0

@ user2525683:該錯誤是基本的Java。 – jlordo

+0

嘗試用「this」替換「上下文上下文」。 – Naddy

相關問題