0

我有一个活动,它将对设备的 MDN 进行字节交换,但是我需要在服务中实现它,但我似乎无法这样做。每次我尝试将代码添加到我的服务时,我都会收到不同的错误,具体取决于我使用的方法,另一个开发人员告诉我我需要实现一个活动 - 但这不是一个选项(它需要在背景)所以我需要在我现有的服务或其他服务(或不可见的活动[如果存在这样的事情])中找到一种对 MDN 进行字节交换的方法

功能字节交换活动(需要作为服务执行)

 public class DeviceManagerUtilities {

//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 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;
    }
    return String.valueOf(data); 
}

}

服务源代码:

    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")) {
                        SharedPreferences settings = getApplicationContext()
                                .getSharedPreferences(Constants.PREFS_NAME, 0);
                        // 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 status = (settings.getString("status", "0"));
                        String tag = ";";
                        String mobileStr = nf.format(mobileBytes);
                        String totalStr = nf.format(totalBytes);
                        // get the MDN

                        TelephonyManager tm = (TelephonyManager) this
                                .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;

                        }

                        // get the date
                        SimpleDateFormat s = new SimpleDateFormat(
                                "hh/mm/ss/MM/dd/yy");
                        String DToDevice = s.format(new Date());

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

                        // 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_NOT_STICKY;
        }

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

        }

    }






ATTEMPTED COMBINATION OF THE TWO: 
-------------------


public class DeviceManagerUtilities {

    //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 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;
        }
        return String.valueOf(data); 
    }

}

错误

Syntax error on token "(", ; expected   DataCountService.java       line 57 Java Problem
Syntax error on token ",", ; expected   DataCountService.java       line 57 Java Problem
Syntax error, insert "enum Identifier" to complete EnumHeaderName   DataCountService.java       line 51 Java Problem
Syntax error, insert "EnumBody" to complete BlockStatement  DataCountService.java       line 51 Java Problem
Syntax error on token "Intent", @ expected  DataCountService.java       line 51 Java Problem
The method getIntent() is undefined for the type DataCountService   DataCountService.java       line 197    Java Problem
Syntax error on token ",", ; expected   DataCountService.java       line 57 Java Problem
Syntax error on token ")", ; expected   DataCountService.java       line 57 Java Problem
4

0 回答 0