Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Resive SMS не в Toast, Перенаправить СМС в dialog или activity 
:(
    Опции темы
CaptainNemo
Дата 3.4.2011, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 5.6.2008
Где: White Russia, Min sk

Репутация: 3
Всего: 9



Ночь добрая, уважаемые

Подскажите решение, если не составит труда...

Мне надо захватить и пропарсить входящее СМС. В инете много примеров отображения входящего СМС в тосте. Однако, как я понял, у тоста нет того, что я хочу видеть. Даже на кастомный 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 от " + msgs[i].getOriginatingAddress();                     
                str += " :";
                str += msgs[i].getMessageBody().toString();
                str += "\n";        
            }
            //---display the new SMS message---
            
            LayoutInflater inflater = LayoutInflater.from(context);
            
            View myView = inflater.inflate(R.layout.custom_toast, null);
            
           /* View layout = inflater.inflate(R.layout.custom_toast,(ViewGroup) findViewById(R.id.llToast));*/
            ImageView image = (ImageView) myView.findViewById(R.id.tvImageToast);
            image.setImageResource(R.drawable.bank_img);
            TextView title = (TextView) myView.findViewById(R.id.tvTitleToast);
            title.setText("Внимание");
            TextView text = (TextView) myView.findViewById(R.id.tvTextToast);
            text.setText(str);

            Toast toast = new Toast(context);
            toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40);
            toast.setDuration(Toast.LENGTH_LONG);
            toast.setView(myView);
            toast.show();
            
            
            /*Toast toast = Toast.makeText(context, str, Toast.LENGTH_LONG);
            toast.setGravity(Gravity.CENTER, 0, 0);
            LinearLayout toastView = (LinearLayout) toast.getView();
            ImageView imageWorld = new ImageView(context);
            imageWorld.setImageResource(R.drawable.agroprombank);
            toastView.addView(imageWorld, 0);
            toast.show();*/
          
         
        } 
       
        
    }
    
    
     
}


Это сообщение отредактировал(а) CaptainNemo - 3.4.2011, 01:30
PM MAIL WWW ICQ Skype GTalk   Вверх
ivanovpv
Дата 3.4.2011, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



CaptainNemo, не очень  понятно в чем вопрос. Не знаете как передать данные из обработчика бродкаста в активити? Если так, то - надо использовать механизм передачи параметров активити через Parcelable (в частном варианте называются экстрас)

Код

        Intent intent=new Intent(this, SMSReceiverActivity.class);
        intent.putExtra(MY_EXTRA_SMS_TEXT, smsString);  //пихаем текст сообщения в экстрас интента
        intent.setAction(ACTION_SMS_RECEIVED);  //определяем экшн
        this.startActivity(intent); //стартуем активити


На той стороне при запуске SMSReceiverActivity параметры извлекаем примерно так:

Код

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        //...
        String action=getIntent().getAction(); //извлекаем экшн (иногда бывает нужен, если активити запускается несколькими разными способами
        Bundle extras = getIntent().getExtras(); 
        String smsText=extras.getString(ACTION_SMS_RECEIVED, ""); //извлекаем текст СМС   
        //...
    }



Это сообщение отредактировал(а) ivanovpv - 3.4.2011, 22:01


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.