Pregunta

I'm a bit confused - I'm getting Extras:

Bundle extras = intent.getExtras();

Then I'm using those extras using:

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

but I'm getting:

swappedMdn cannot be resolved or is not a field



Any suggestions? 

Full Source:

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

}

}

DATA COUNT UTILITIES:

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

}
¿Fue útil?

Solución

Your code is :-

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

which is wrong. As swappedmdn is a method. Do something like this:-

    String mdn = extras.getString(DataCountUtilities.swappedMdn(Context context));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top