Проблема с предупреждением в классе smsRecevicer - PullRequest
0 голосов
/ 31 июля 2011

Я новичок здесь. Я делаю приложение, где оно должно показывать оповещение на смс сообщение Я не думаю, что я понимаю, как я бывший. может вызывать функцию из другого класса, когда функция имеет атрибут "this".

Но эта строка не работает:

AlertDialog.Builder(this).setTitle("asd").setMessa ge(str).setNegativeButton("Annuller", null).setPositiveButton("Bekræft", null).show();

Я не уверен, что это из-за того, что этот класс работает в фоновом режиме или как?

Это класс:

package net.sms;

import android.app.AlertDialog;
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";        
            }
            AlertDialog.Builder alt_bld = new AlertDialog.Builder(context);
            alt_bld.setTitle("aaa");
            alt_bld.show();
            //new AlertDialog.Builder(this).setTitle("asd").setMessage(str).setNegativeButton("Annuller", null).setPositiveButton("Bekræft", null).show();
            //---display the new SMS message---
            Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
        }                         
    }
}

Ответы [ 2 ]

0 голосов
/ 01 августа 2011

Не думаю, что вы могли бы запустить оповещение в Broadcast Receiver.Вы можете добиться аналогичного эффекта, запустив действие, которое выглядит как предупреждение.Примечание. Google не рекомендует запускать операции из фоновых служб или получателей.

Manifest.xml

<activity android:name="AlertActivity" android:theme="@android:style/Theme.Dialog" />

alert_activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="fill_parent">
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content">

    <Button android:id="@+id/positiveButton" android:layout_weight="1"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="Annuller" />

    <Button android:id="@+id/negativeButton" android:layout_weight="1"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="Bekraft" />

</LinearLayout>
</LinearLayout>

SmsReceiver.java

context.startActivity(new Intent(context, AlertActivity.class));
0 голосов
/ 31 июля 2011

Приемники не любят диалоги оповещений.Вы можете использовать уведомление или тост.

...