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());
}
}
}
}
}
分享到:
相关推荐
在Android平台上,获取手机用户绑定的手机号码是一个常见的需求,特别是在开发需要用户验证或个性化服务的应用时。然而,由于隐私保护政策和不同运营商的限制,直接获取手机号码并不总是可行的。本文将详细介绍如何...
1. 用户授权:当用户首次打开微信小程序时,系统会提示用户是否允许小程序获取手机号。用户同意后,微信会生成一个加密的手机号码并存储在本地。 2. 后端请求解密:开发者在前端触发一个API,如`wx.login()`,获取...
其中,一键获取手机号功能是友盟针对移动应用开发的一项服务,它可以帮助开发者便捷地获取到用户的手机号码,前提是用户已经授权。这在实名制或需要手机号进行账号注册的场景下非常有用。 PHP作为后端编程语言,被...
本文将详细介绍如何在Android应用中获取本机手机号及服务运营商。 首先,获取本机手机号码通常需要权限声明。在AndroidManifest.xml文件中添加以下权限: ```xml ``` 这个权限允许应用访问电话状态,包括设备的...
在Android系统中,获取短信中心号码是开发过程中可能遇到的需求,这主要涉及到与短信服务相关的API交互。短信中心号码(SMSC,Short Message Service Center)是短信传递过程中的一个重要环节,它负责存储、转发和...
在Android平台上,获取手机电话号码和短信内容是两个不同的任务,涉及到系统权限和特定API的使用。下面将分别详细介绍这两个知识点。 ### 手机电话号码的获取 在Android中,获取设备的电话号码通常需要使用`...
1. **获取加密数据**:当用户授权获取手机号时,微信会返回一个加密的数据包,包含用户的手机号。 2. **实例化解密类**:在服务器端,使用`WxBizDataCrypt`类,传入小程序的AppID和从上一步获取的session_key。 3....
以上就是关于微信小程序获取手机号码解密算法PHP版本的基本知识,这个过程涉及到微信小程序的授权机制、数据加密解密原理以及PHP的加密函数使用。理解并掌握这个过程对于开发微信小程序的服务器端功能至关重要。
组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到微信服务器返回的加密数据, 然后在第三方服务端结合 session_key 以及 app_id 进行解密获取手机号。...
4. **明确提示用户**:在用户界面中明确提示“授权手机号快捷登录”或“手机号码一键登录”,避免在用户进入小程序之初就弹出获取手机号的对话框。 #### 技术细节 ##### 获取 `session_key` 首先,我们需要从前端...
对于获取手机号码,需要添加`<uses-permission android:name="android.permission.READ_PHONE_STATE" />`,这个权限允许应用读取电话的状态,包括SIM卡上的手机号码。而获取运营商信息则通常不需要额外的权限,因为...
综上所述,获取SIM卡运营商信息在Android中是可行的,但获取手机号码需遵守系统限制和隐私政策,通常需要用户主动提供或通过合法的验证服务获取。在实际开发中,应充分理解这些限制并遵循最佳实践。
在Java编程领域,有时我们需要获取手机号的相关信息,如归属地、SIM卡类型、运营商(移动或联通)、区号和邮编等。这通常涉及到手机号码的解析和查询工作。在这个场景下,我们可以利用公开的API或者数据库来实现这些...
在Android平台上,获取手机号码归属地是一项常见的需求,特别是在开发涉及通信或用户验证的应用时。本文将详细讲解如何实现这一功能。 首先,我们要明白手机号码的归属地信息通常包括运营商(如中国移动、中国联通...
在PHP开发中,有时我们需要获取手机号码的归属地信息,例如用于用户注册验证或数据分析。本文将详细讲解如何使用PHP实现这一功能,主要基于提供的"mobilecity.class.php"类库和"data/Mobile.txt"数据文件。 首先,...
在Android平台上,获取手机的号码和运营商信息是常见的需求,特别是在开发涉及通信功能的应用时。以下是如何在Android中实现这一功能的详细步骤和相关知识点。 首先,为了获取手机号码和运营商信息,我们需要使用`...
获取手机IMEI号在编程中常用于设备注册、防盗追踪、售后服务等场景。在Android系统中,开发者可以通过调用`TelephonyManager`类的`getDeviceId()`方法来获取IMEI。例如: ```java TelephonyManager ...
综上所述,这个“最新手机访客手机号码统计系统源码”涉及到的技术广泛且深入,包括数据采集、处理、分析、安全等多个方面,是现代互联网服务中不可或缺的一部分。同时,其在实际应用中必须注重隐私保护和合规操作,...
在实际应用中,这样的数据库可以被整合到各种系统中,如电话呼叫中心的CRM系统,通过API接口提供实时查询服务。开发者可以利用这些数据为移动应用添加电话号码验证或地理位置识别的功能。同时,为了提高查询效率,...
在IT行业中,获取手机号码归属地是一项常见的需求,特别是在市场营销、客户服务、数据分析等领域。这个"案例获取手机号码归属 .zip"文件提供了一个解决方案,虽然作者自认为可能较为简陋,但其意图是分享并帮助有...