首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

取得手机中心号(服务号)

2012-08-29 
获得手机中心号(服务号)package lab.sodino.servicecenteraddress import android.app.Activity import

获得手机中心号(服务号)
package lab.sodino.servicecenteraddress;

import android.app.Activity;

import android.app.PendingIntent;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.os.Bundle;

import android.telephony.gsm.SmsManager;

import android.telephony.gsm.SmsMessage;

import android.view.Gravity;

import android.view.View;

import android.widget.Button;

import android.widget.LinearLayout;

import android.widget.TextView;

import android.widget.LinearLayout.LayoutParams;

public class ServiceCenterAddressAct extends Activity {

        private static final String ACTION_SMS_SEND = "lab.sodino.sms.send";

        private static final String ACTION_SMS_DELIVERY = "lab.sodino.sms.delivery";

        private static final String ACTION_SMS_RECEIVER = "android.provider.Telephony.SMS_RECEIVED";

        private TextView serviceCenterAddressText;

        private SMSReceiver sendReceiver;

        private SMSReceiver deliveryReceiver;

        private SMSReceiver smsReceiver;

        /** Called when the activity is first created. */

        @Override

        public void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);

                LinearLayout.LayoutParams layParams = new LinearLayout.LayoutParams(

                                LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);

                LinearLayout linearLay = new LinearLayout(this);

                linearLay.setOrientation(LinearLayout.VERTICAL);

                linearLay.setLayoutParams(layParams);

                TextView textView = new TextView(this);

                textView.setBackgroundColor(0xffffffff);

                textView.setTextColor(0xff0000ff);

                textView.setTextSize(20);

                textView.setText("点击发送按钮将发送自定义字符串至10086");

                textView.setGravity(Gravity.CENTER);

                linearLay.addView(textView);

                Button btnSend = new Button(this);

                // LinearLayout.LayoutParams btnParams = new LinearLayout.LayoutParams(

                // LinearLayout.LayoutParams.FILL_PARENT,

                // LinearLayout.LayoutParams.WRAP_CONTENT);

                btnSend.setText("发送");

                btnSend.setOnClickListener(new Button.OnClickListener() {

                        public void onClick(View v) {

                                serviceCenterAddressText.setText("正在等待发送短信...");

                                sendSms();

                        }

                });

                linearLay.addView(btnSend);

                serviceCenterAddressText = new TextView(this);

                serviceCenterAddressText.setText("正在等待发送短信...");

                serviceCenterAddressText.setBackgroundColor(0xffffffff);

                serviceCenterAddressText.setTextColor(0xff0000ff);

                serviceCenterAddressText.setTextSize(20);

                serviceCenterAddressText.setGravity(Gravity.LEFT);

                linearLay.addView(serviceCenterAddressText);

                setContentView(linearLay);

                // 注册send

                sendReceiver = new SMSReceiver();

                IntentFilter sendFilter = new IntentFilter(ACTION_SMS_SEND);

                registerReceiver(sendReceiver, sendFilter);

                // 注册delivery

                deliveryReceiver = new SMSReceiver();

                IntentFilter deliveryFilter = new IntentFilter(ACTION_SMS_DELIVERY);

                registerReceiver(deliveryReceiver, deliveryFilter);

                // 注册接收下行receiver

                smsReceiver = new SMSReceiver();

                IntentFilter receiverFilter = new IntentFilter(ACTION_SMS_RECEIVER);

                registerReceiver(smsReceiver, receiverFilter);

        }

        protected void onPause() {

                unregisterReceiver(sendReceiver);

                unregisterReceiver(deliveryReceiver);

                unregisterReceiver(smsReceiver);

        }

        private void sendSms() {

                String smsBody = "lab.sodino.sms.test";

                String smsAddress = "10086";

                SmsManager smsMag = SmsManager.getDefault();

                Intent sendIntent = new Intent(ACTION_SMS_SEND);

                PendingIntent sendPI = PendingIntent.getBroadcast(this, 0, sendIntent,

                                0);

                Intent deliveryIntent = new Intent(ACTION_SMS_DELIVERY);

                PendingIntent deliveryPI = PendingIntent.getBroadcast(this, 0,

                                deliveryIntent, 0);

                smsMag.sendTextMessage(smsAddress, null, smsBody, sendPI, deliveryPI);

        }

        public class SMSReceiver extends BroadcastReceiver {

                public void onReceive(Context context, Intent intent) {

                        String actionName = intent.getAction();

                        int resultCode = getResultCode();

                        if (actionName.equals(ACTION_SMS_SEND)) {

                                switch (resultCode) {

                                case Activity.RESULT_OK:

                                        serviceCenterAddressText

                                                        .append("\n[Send]SMS Send:Successed!");

                                        break;

                                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:

                                        serviceCenterAddressText

                                                        .append("\n[Send]SMS Send:RESULT_ERROR_GENERIC_FAILURE!");

                                        break;

                                case SmsManager.RESULT_ERROR_NO_SERVICE:

                                        serviceCenterAddressText

                                                        .append("\n[Send]SMS Send:RESULT_ERROR_NO_SERVICE!");

                                        break;

                                case SmsManager.RESULT_ERROR_NULL_PDU:

                                        serviceCenterAddressText

                                                        .append("\n[Send]SMS Send:RESULT_ERROR_NULL_PDU!");

                                        break;

                                case SmsManager.RESULT_ERROR_RADIO_OFF:

                                        break;

                                }

                        } else if (actionName.equals(ACTION_SMS_DELIVERY)) {

                                switch (resultCode) {

                                case Activity.RESULT_OK:

                                        serviceCenterAddressText

                                                        .append("\n[Delivery]SMS Delivery:Successed!");

                                        break;

                                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:

                                        serviceCenterAddressText

                                                        .append("\n[Delivery]SMS Delivery:RESULT_ERROR_GENERIC_FAILURE!");

                                        break;

                                case SmsManager.RESULT_ERROR_NO_SERVICE:

                                        serviceCenterAddressText

                                                        .append("\n[Delivery]SMS Delivery:RESULT_ERROR_NO_SERVICE!");

                                        break;

                                case SmsManager.RESULT_ERROR_NULL_PDU:

                                        serviceCenterAddressText

                                                        .append("\n[Delivery]SMS Delivery:RESULT_ERROR_NULL_PDU!");

                                        break;

                                case SmsManager.RESULT_ERROR_RADIO_OFF:

                                        serviceCenterAddressText

                                                        .append("\n[Delivery]SMS Delivery:RESULT_ERROR_RADIO_OFF!");

                                        break;

                                }

                                serviceCenterAddressText.append("\n正在等待下行短信...");

                        } else if (actionName.equals(ACTION_SMS_RECEIVER)) {

                                System.out.println("[Sodino]result = " + resultCode);

                                Bundle bundle = intent.getExtras();

                                if (bundle != null) {

                                        Object[] myOBJpdus = (Object[]) bundle.get("pdus");

                                        SmsMessage[] messages = new SmsMessage[myOBJpdus.length];

                                        for (int i = 0; i < myOBJpdus.length; i++) {

                                                messages[i] = SmsMessage

                                                                .createFromPdu((byte[]) myOBJpdus[i]);

                                        }

                                        SmsMessage message = messages[0];

                                        serviceCenterAddressText.append("\n短信服务中心号码为:"

                                                        + message.getServiceCenterAddress());

                                }

                        }

                }

        }

}

热点排行