`

android平台短信中心号获取

 
阅读更多

就是直接获取用户手机中的短信中心号,该种方式需要你的应用满足两个条件,1:你的应用需要有系统签名. 2:你的应用需要和phone进程在同一个进程组。具体实现方式如下:

配置AndroidManifest.xml 文件

<?xml version="1.0" encoding="utf-8"?>
< manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hello"
android:sharedUserId="android.uid.phone"
android:versionCode="1"
android:versionName="100">

<application android:icon="@drawable/icon"
android:process="com.android.phone"
android:label="@string/app_name">
<activity android:name=".HelloWordActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

</application>

</manifest>

具体实现代码如下:

public class HelloWordActivity extends Activity implements Callback
{

private Handler mSmscHandle = null;

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

try
{
mSmscHandle = new Handler(this);
getSmsc();

}

catch(Exception e)

{}

}


@SuppressWarnings("unchecked")
public void getSmsc()
{
try
{
//调用PhoneFactory.getDefaultPhone()
Class PhoneFactory = Class.forName("com.android.internal.telephony.PhoneFactory");
Method getDefaultPhone = PhoneFactory.getMethod("getDefaultPhone", (Class[]) null);
Object phone = (Object)getDefaultPhone.invoke(null, (Object[]) null);
Log.i("HELLOWORLD", "phone:" + phone);

//调用Phone.getSmscAddress(Message result)
Class[] ParamType = new Class[1];
ParamType[0] = Message.class;

Message msg = mSmscHandle.obtainMessage(10001);
Object[] paramValue = new Object[1];
paramValue[0] = msg;

Class Phone = Class.forName("com.android.internal.telephony.Phone");
Method getSmscAddress = Phone.getDeclaredMethod("getSmscAddress", ParamType);
getSmscAddress.invoke(phone, paramValue);
}
catch( Exception e )
{
showTrace(e);
}
}

public boolean handleMessage(Message msg)
{
// TODO Auto-generated method stub

Log.i("HELLOWORLD", "handleMessage() msg.what:" + msg.what
+ " data:" + msg.peekData()
+ " result:" + msg.obj.toString());
if(10001 == msg.what)
{
dealSmscResult(msg.obj);
}
return false;
}

private void dealSmscResult(Object asyncResult)
{
try
{
Field exception = asyncResult.getClass().getDeclaredField("exception");
Throwable throwable = (Throwable)exception.get(asyncResult);

Field result = asyncResult.getClass().getDeclaredField("result");
Object myResult = result.get(asyncResult);

if(null != myResult)
{
Log.i("HELLOWORLD", "dealSmscResult() result:" + myResult.toString());
String szResult = (String)myResult;
String szAddr = szResult.split(",")[0];

Log.i("HELLOWORLD", "dealSmscResult() smsc:" + szAddr);
}

if(null != throwable)
{
Log.i("HELLOWORLD", "dealSmscResult() throwable:" + throwable.getMessage());
}
}
catch(Exception e)
{
showTrace(e);
}
}

}

代码比较简单,就是调用两个两个隐藏的com.android.internal.telephony.PhoneFactory,

om.android.internal.telephony.Phone 就能获取本机的短信中心号码。

之后还需要使用android源码包中 platform.pk8 platform.x509.pem 两个文件(build\target\product\security 目录下)对生成的apk签名;否则无法安装在手机上。签名的命令为

java -jar signapk.jar platform.x509.pem platform.pk8 HelloWord.apk HelloWordSign.apk

分享到:
评论

相关推荐

    android获取短信中心号

    在Android系统中,获取短信中心号码是开发过程中可能遇到的需求,这主要涉及到与短信服务相关的API交互。短信中心号码(SMSC,Short Message Service Center)是短信传递过程中的一个重要环节,它负责存储、转发和...

    android 获取短信中心号 Demo

    这个"android 获取短信中心号 Demo"提供了实现这一功能的实例代码,为开发者提供了学习和实践的平台。下面,我们将深入探讨这一知识点,以及如何通过示例进行操作。 首先,短信中心号码(SMSC)是手机与短信服务...

    android 获取手机电话号码短信内容

    在Android平台上,获取手机电话号码和短信内容是两个不同的任务,涉及到系统权限和特定API的使用。下面将分别详细介绍这两个知识点。 ### 手机电话号码的获取 在Android中,获取设备的电话号码通常需要使用`...

    Android 手机获取手机号实现方法

    在Android平台上,获取手机用户绑定的手机号码是一个常见的需求,特别是在开发需要用户验证或个性化服务的应用时。然而,由于隐私保护政策和不同运营商的限制,直接获取手机号码并不总是可行的。本文将详细介绍如何...

    Android10.0SN号获取接口patch.zip

    每个Android设备都有一个唯一的SN号,它不与用户数据相关联,也不像IMEI或IMSI那样可以轻易获取。在Android 10.0版本中,为了保护用户隐私和遵循GDPR(General Data Protection Regulation)规定,谷歌对获取设备...

    android 短信中心号

    标题"android 短信中心号"指出我们关注的是如何在Android平台上获取手机当前设置的短信中心号码。描述提到的方法是通过手机内部存储的短信信息来获取这个号码,并且已有人成功测试过。开发者可能需要根据自己的项目...

    Android通讯录姓名手机号获取,打电话发短信功能。

    在Android平台上,获取用户的联系人信息以及实现打电话和发送短信的功能是常见的应用场景,尤其是在开发社交或者通讯类应用时。下面将详细讲解如何在Android Studio中实现这些功能。 首先,我们需要了解Android的...

    Android获取手机短信

    // 打印短信信息 Log.d("SMS", "Address: " + address + ", Body: " + body + ", Date: " + date); } while (cursor.moveToNext()); } cursor.close(); ``` 3. 分类查询: 如果你想按类型查询短信,可以在`query...

    android 获取手机短信内容并及时刷新短信

    在Android平台上,获取手机短信内容并实时刷新是一项常见的需求,特别是在开发与消息处理相关的应用程序时。这个过程涉及到Android系统的SMS(Short Message Service)API以及监听短信变化的能力。下面将详细介绍...

    android 获取短信和通话记录信息

    一、获取短信信息 1. 权限声明: 首先,为了访问短信数据库,你需要在AndroidManifest.xml文件中添加以下权限: ```xml &lt;uses-permission android:name="android.permission.READ_SMS" /&gt; ``` 如果需要写入短信,还...

    Android获取手机号码和运营商信息的方法

    在Android平台上,获取手机的号码和运营商信息是常见的需求,特别是在开发涉及通信功能的应用时。以下是如何在Android中实现这一功能的详细步骤和相关知识点。 首先,为了获取手机号码和运营商信息,我们需要使用`...

    Android获取手机号码

    需要注意的是,从Android 10(API级别29)开始,获取IMEI和其他设备识别号受到了更严格的限制。除非你的应用是默认的电话应用或者具有特定的设备管理器权限,否则可能无法获取这些信息。 此外,获取手机号码的另一...

    Android SIM卡号码获取

    在Android中,获取这些信息的方法如下: ```java // 获取IMEI (需要权限 `&lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&gt;`) String imei = Build.getSerial(); // API 26及以上 if ...

    Android获取版本号

    在Android开发中,获取设备的版本号是常见的需求,这有助于开发者了解运行应用的设备环境,以便进行适配和调试。本文将详细讲解如何在Android系统中获取版本号,并提供相关的代码示例。 1. **Android版本号类型** ...

    android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法

    Android 平台获取手机 IMSI、IMEI、...Android 平台提供了多种方法来获取手机的 IMSI、IMEI、序列号和手机号,这些信息对于移动应用程序的开发和维护非常重要。开发者可以根据实际情况选择合适的方法来获取这些信息。

    Android代码-SIM卡运营商获取手机号码功能暂时无法实现.zip

    1. **SIM卡运营商信息获取**: - 使用`SubscriptionManager`类:Android 5.0(API级别21)及以上版本提供了`SubscriptionManager`,可以获取到所有可用的电话订阅信息,包括SIM卡的运营商名称。例如: ```java ...

    android获取手机号码_获取手机运营商

    在Android开发中,获取设备的手机号码和运营商信息是常见的需求,这主要涉及到对设备硬件信息的访问。本文将详细讲解如何在Android中实现这些功能,并提供相关的代码示例。 首先,我们需要理解Android系统的权限...

    Android获取手机号码归属地

    在Android平台上,获取手机号码归属地是一项常见的需求,特别是在开发涉及通信或用户验证的应用时。本文将详细讲解如何实现这一功能。 首先,我们要明白手机号码的归属地信息通常包括运营商(如中国移动、中国联通...

    获取基站信息android

    获取基站信息 Android Android 中获取基站信息需要使用两个类:TelephonyManager 和 GsmCellLocation。TelephonyManager 是 Android 中的一个系统服务,提供了对电话通讯服务的访问。它不能直接实例化,需要通过 ...

Global site tag (gtag.js) - Google Analytics