如何注册我的应用程序,以便当我收到短信时,我的应用程序出现在对话框中。我已经加入了意图代码
<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>
但它不起作用......我应该使用接收器吗?请注意,我插入此代码的活动不是主要活动。感谢
答案 0 :(得分:8)
使用以下代码。
<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>
答案 1 :(得分:3)
在文档中没有详细记录。
您可以找到相关信息 AndDev
以下是一些摘录:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
2您不得在活动中声明相同的意图过滤器,但必须在接收器中对其进行过滤,包括关注您的清单
<receiver android:name=".SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
3创建一个扩展android.content.IntentReceiver
的类并覆盖类的onReceiveIntent方法listen for action android.provider.Telephony.SMS_RECEIVED
不是SDK的一部分
继承了更多代码提取:
// @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();
答案 2 :(得分:2)
请参阅开始Android应用程序开发一书中的这一免费章节,其中详细说明了如何接收(和发送)SMS:
答案 3 :(得分:0)
你需要这个
<uses-permission android:name="android.permission.RECEIVE_SMS" />
AndroidManifest.xml中的