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

时间:2010-11-23 14:34:20

标签: android

如何注册我的应用程序,以便当我收到短信时,我的应用程序出现在对话框中。我已经加入了意图代码

<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>

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

4 个答案:

答案 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

以下是一些摘录:

  1. 您必须使用以下权限,将其包含在AndroidManifest
  2. <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:

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

答案 3 :(得分:0)

你需要这个

<uses-permission android:name="android.permission.RECEIVE_SMS" />
AndroidManifest.xml中的