cómo utilizar la intención del receptor androide
-
27-09-2019 - |
Pregunta
Tengo un receptor de SMS de trabajo pero cuando intento cargar otra clase usando:
Intent intent = new Intent(SMSReceiver.this, SMSNotifier.class);
startActivityForResult(intent, 0);
Me sale este error:
El constructor Intención (SMSReceiver, Class) es indefinido
para la primera línea y:
El startActivityForResult método (Intención, int) no está definida para el tipo SMSReceiver
para la segunda línea
Te lo agradecería algún consejo en cuanto a lo que va mal.
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);
}
}
Solución
SMSReceiver
no es una actividad. Sólo actividades pueden utilizar startActivityForResult()
, y sólo Contexts
(una clase padre de Activity
) ser utilizado en la creación de un Intent
con el constructor que ha elegido.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow