Получать смс через Мои приложения в Android - PullRequest
0 голосов
/ 09 марта 2012

Я занимаюсь разработкой приложения для Android, которое позволяло бы людям отправлять и получать SMS-сообщения на уникальный номер через мое приложение. Я могу отправить SMS, но оно появляется в окне сообщения INBOX!

Я хочу, чтобы оно появилось в моем приложении

Я гуглил и нахожу это, но я не хочу, чтобы оно появлялось в сообщении Toast, я хочу, чтобы оно было как в Что приложение в android и как сохранить все SMS с этого номера?

это код:

package net.learn2develop.SMSMessaging;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.gsm.SmsMessage; 
import android.widget.Toast;

public class SmsReceiver extends BroadcastReceiver
{
 @Override
    public void onReceive(Context context, Intent intent) 
   {
    //---get the SMS message passed in---
    Bundle bundle = intent.getExtras();        
    SmsMessage[] msgs = null;
    String str = "";            
    if (bundle != null)
    {
        //---retrieve the SMS message received---
        Object[] pdus = (Object[]) bundle.get("pdus");
        msgs = new SmsMessage[pdus.length];            
        for (int i=0; i<msgs.length; i++){
            msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                
            str += "SMS from " + msgs[i].getOriginatingAddress();                     
            str += " :";
            str += msgs[i].getMessageBody().toString();
            str += "\n";        
        }
        //---display the new SMS message---
        Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
    }                         
 } 
 }  

Ответы [ 2 ]

0 голосов
/ 01 ноября 2014

В вашем манифесте должно быть что-то похожее на это:

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

Примечание android: priority = "999" .

В вашем onReceive() методе первая строка должна быть abortBroadcast();. Время имеет значение, и вы получите связку от намерения.

0 голосов
/ 09 марта 2012

Согласно: Можем ли мы удалить SMS в Android до того, как оно попадет в почтовый ящик?

Входящие SMS сообщения (android.provider.Telephony.SMS_RECEIVED) доставляются в виде " заказанная трансляция " - это означает, что вы можете указать системе, которая компоненты должны получать трансляцию в первую очередь.

Если вы определяете атрибут android: priority при прослушивании SMS-сообщений вы получите уведомление до того, как родное приложение SMS.

На этом этапе вы можете отменить трансляцию, не давая ей распространяется в другие приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...