android:注册应用程序来接收短信

我如何注册我的应用程序,以便当我收到一个短信我的应用程序出现在对话框完成操作使用。 我已经input了一个意图代码

<intent-filter> <action android:name="android.intent.action.VIEW"/> <action android:name="android.intent.action.SENDTO"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="sms"/> </intent-filter> 

但它不工作…我应该使用接收器吗? 请注意,我插入此代码的活动不是主要活动。 谢谢

Solutions Collecting From Web of "android:注册应用程序来接收短信"

使用下面的代码。

 <activity android:name=".SMSNewActivity" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android-dir/mms-sms" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.SENDTO" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="sms" /> <data android:scheme="smsto" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> </activity> <activity android:name=".SMSMainListActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEARCH" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 

它在doc中没有很好的logging。

你可以findAndDev的信息

这里有一些摘录:

  1. 您必须使用以下权限,将其包含在您的AndroidManifest中

<uses-permission android:name="android.permission.RECEIVE_SMS" />

2您不能在您的活动中声明一个意图filter,但在接收器中进行过滤,包括跟随您的清单

<receiver android:name=".SMSReceiver"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>

3创build一个扩展android.content.IntentReceiver的类并重写该类的onReceiveIntent方法listen for action android.provider.Telephony.SMS_RECEIVED不是SDK的一部分

inheritance人一些更多的代码提取:

  // @Override public void onReceiveIntent(Context context, Intent intent) { if (intent.getAction().equals(ACTION)) { // if(message starts with SMStretcher recognize BYTE) StringBuilder sb = new StringBuilder(); /* The SMS-Messages are 'hiding' within the extras of the Intent. */ Bundle bundle = intent.getExtras(); if (bundle != null) { /* Get all messages contained in the Intent*/ SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent); /* Feed the StringBuilder with all Messages found. */ for (SmsMessage currentMessage : messages){ sb.append("Received compressed SMSnFrom: "); /* Sender-Number */ sb.append(currentMessage.getDisplayOriginatingAddress()); sb.append("n----Message----n"); /* Actual Message-Content */ sb.append(currentMessage.getDisplayMessageBody()); } } /* Logger Debug-Output */ Log.i(LOG_TAG, "[SMSApp] onReceiveIntent: " + sb); /* Show the Notification containing the Message. */ Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show(); 

请阅读“ 开始Android应用程序开发 ”一书中的免费章节,详细介绍如何接收(并发送)SMS:

http://p2p.wrox.com/content/articles/creating-android-apps-send-and-receive-sms-messages-and-send-email

你将需要这个

 <uses-permission android:name="android.permission.RECEIVE_SMS" /> 

在AndroidManifest.xml中