2010-11-23 2 views
7

как я могу зарегистрировать свое приложение, чтобы при получении sms мое приложение появилось в диалоговом окне «Полное действие». Я ввел код намеренияandroid: зарегистрировать заявку на получение sms

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

но он не работает ... должен ли я использовать приемник? Обратите внимание, что активность, в которую я вставил этот код, не является основным видом активности. Благодаря

ответ

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

Вы будете нуждаться в этом

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

в AndroidManifest.xml

+0

У меня есть разрешения – 2010-11-23 15:06:20

+0

SEND_SMS, READ_SMS, WRITE_SMS, RECEIVE_SMS, BROADCAST_SMS – 2010-11-23 15:07:45

3

Ее не хорошо документированы в док.

Вы можете найти информацию о AndDev

Вот некоторые выдержки:

  1. Вы должны использовать следующее разрешение, включить его в свой AndroidManifest

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

-Создать класс, который расширяет android.content.IntentReceiver и переопределить onReceiveIntent метода класса слушать действия android.provider.Telephony.SMS_RECEIVED не является частью SDK

Heres некоторых больше кода экстракт:

// @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(); 
Смежные вопросы