如何伪造发送短信和系统通知?以编程方式处理?

时间:2012-03-08 17:49:18

标签: java android notifications sms

更新:首先说明一下:我正在寻找一种程序化的方法。我知道使用模拟器很容易实现,但我正在寻找一种在手机上的实际应用程序中实现它的方法。

我已经玩了一段时间了,虽然我可以用收件箱或发件箱写信息

ContentValues values = new ContentValues();
values.put("address", "5551");
values.put("body", "the text of this message");
getContentResolver().insert(Uri.parse("content://sms/inbox"),values)

当然

<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>

WRITE_SMS仅适用于以下某些内容,因为我尝试过的所有内容都无法让系统收到通知。我考虑过调查内置短信应用程序的代码但找不到它。

以下是我尝试过的事情:

context.getContentResolver().notifyChange(Uri.parse("content://sms/inbox",null);

具有相同的非效果,如:

Intent intent = new Intent("android.provider.Telephony.SMS_RECEIVED");
byte[] b = (byte[])(SmsMessage.getSubmitPdu("5551","5552","some_text",false).encodedMessage);
Object[] vrs = {b};
intent.putExtra("pdus",vrs);
sendBroadcast(intent);

现在作为解决方法,我正在调用短信列表:

Intent intent = new Intent("android.intent.action.MAIN");
intent.setComponent(new ComponentName("com.android.mms","com.android.mms.ui.ConversationList"));
startActivity(intent);

任何想法或提示?


好的,所以我一直在浏览android代码,尤其是 http://www.java2s.com/Open-Source/Android/android-platform-apps/Mms/com/android/mms/transaction/MessagingNotification.java.htm

据我所知,我需要做的就是在写完短信后调用公共静态MessagingNotification.blockingUpdateAllNotifications(context)。有什么方法可以访问这种方法吗?

1 个答案:

答案 0 :(得分:0)

使用DDMS中的“模拟器控件”部分将测试短信/文本发送到模拟器。您还可以输入要发送短信的假号码。

enter image description here

可以在开发指南中使用DDMS文档的"Spoofing calls or SMS text messages"部分找到更多信息