2010-06-16 6 views
1

J'ai un récepteur SMS de travail, mais lorsque je tente de charger une autre classe en utilisant:comment utiliser l'intention du récepteur Android

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

Je reçois cette erreur:

The constructor Intent(SMSReceiver, Class) is undefined

pour la première et la ligne:

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

pour la deuxième ligne

J'apprécierais vraiment quelques conseils sur ce qui ne va pas.

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); 
    } 
} 

Répondre

1

SMSReceiver n'est pas une activité. Seules les activités peuvent utiliser startActivityForResult() et seulement Contexts (une classe parente de Activity) pour créer un Intent en utilisant le constructeur que vous avez choisi.

+0

merci quel code dois-je utiliser à la place? – ng93

+0

@ ng93: Je n'en ai aucune idée. C'est ton code, pas le mien. En supposant que 'SMSReceiver' est un' BroadcastReceiver', vous avez reçu un 'Context' dans' onReceieve() 'que vous pourriez utiliser pour créer' Intent'. Cependant, un 'BroadcastReceiver' ne devrait pas commencer une' Activity', car cela interrompt l'utilisateur dans tout ce qu'il fait. – CommonsWare

+0

Je voulais seulement lancer une nouvelle activité afin de pouvoir créer une notification de la barre d'état. J'ai essayé ceci dans SMSReceiver mais je n'ai pas réussi à le faire fonctionner. Peut-être que je devrais demander comment créer une notification dans SMSReceiver? – ng93

Questions connexes