0

在尝试检索 swappedMdn 的值时,我收到两个错误,都表明 swappedMdn 无法解析为变量。

我不确定我到底做错了什么,因为它(对我来说)我正在正确地建立、保存和交换 Mdn - 但是在某个地方出了点问题。

非常感谢任何帮助。

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

    }

片段 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);

 }

    }
4

1 回答 1

0

这里

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

您正在尝试使用这个“变量” swappedMdn,它实际上是您所在的函数……而不是变量。我不知道你的意思是它是infomdn其他东西,但swappedMdn它不是一个变量,它的功能。

另外,不是问题,但我不确定为什么你有一个接受 aContext作为参数的函数,因为Service它有自己的Context

于 2013-06-27T19:05:23.443 回答