MindlessBarber
MindlessBarber

Reputation: 1596

how to use intent from receiver android

I've got a working SMS receiver but when I try to load another class using:

Intent intent = new Intent(SMSReceiver.this, SMSNotifier.class);  
startActivityForResult(intent, 0);

I get this error:

The constructor Intent(SMSReceiver, Class) is undefined

for the first line and:

The method startActivityForResult(Intent, int) is undefined for the type SMSReceiver

for the second line

I'd really appreciate some advice as to what's going wrong.

package com.prototype.messages;

import android.app.Notification;  
import android.app.NotificationManager;  
import android.app.PendingIntent;  
import android.content.BroadcastReceiver;  
import android.content.Context;  
import android.content.Intent;  
import android.os.Bundle;   
import android.telephony.gsm.SmsMessage;    

> public class SMSReceiver extends BroadcastReceiver {  
    @Override  
    public void onReceive(Context context, Intent intent) {  
        Bundle bundle = intent.getExtras();          
        SmsMessage[] msgs = null;  
        String str = "";              
        if (bundle != null) {  
            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";          
            }  
        }  
//      Context context = getApplicationContext();  
        String ns = Context.NOTIFICATION_SERVICE;  
        int icon = R.drawable.icon;   
        CharSequence tickerText = "Hello";  
        long when = System.currentTimeMillis();  
        Notification notification = new Notification(icon, tickerText, when);  
        CharSequence contentTitle = "My notification";  
        CharSequence contentText = "Hello World!";   
//        Intent notificationIntent = new Intent(SMSReceiver.this, Messages.class);  
//        notificationIntent.setFlags(  Intent.FLAG_ACTIVITY_NEW_TASK);  
//        PendingIntent contentIntent = PendingIntent.getActivity(this,0,notificationIntent,0);  
        notification.setLatestEventInfo(context, contentTitle, contentText, null);  
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);  
        mNotificationManager.notify(1, notification);  
    }  
}  

Upvotes: 1

Views: 1390

Answers (1)

CommonsWare
CommonsWare

Reputation: 1006674

SMSReceiver is not an activity. Only activities can use startActivityForResult(), and only Contexts (a parent class of Activity) be used in creating an Intent using the constructor you chose.

Upvotes: 1

Related Questions