Der Zweck meines Projekts ist es, eine SMS-Nachricht zu erhalten. Also, das Problem ist, wenn ich eine Nachricht erhalte, muss ich den Nachrichtenwert an meine Hauptklasse übergeben. Hier ist mein Setup.Übergabe von Wert an Hauptklasse mit BroadcastReceiver
Hauptklasse:
public class MainActivity extends AppCompatActivity implements LocationListener {
LocationManager locationManager;
String mprovider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//some activity is going on here.
}
public void reply(final String smsMessage) {
TextView txtMessage = (TextView) findViewById(R.id.lblMessage);
txtMessage.setText("message: "+smsMessage);
}
SmsReceiver Klasse:
public class SmsReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent)
{
Bundle myBundle = intent.getExtras();
SmsMessage [] messages = null;
String strMessage = "";
if (myBundle != null)
{
Object [] pdus = (Object[]) myBundle.get("pdus");
messages = new SmsMessage[pdus.length];
for (int i = 0; i < messages.length; i++)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
String format = myBundle.getString("format");
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i], format);
}
else {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
strMessage += "SMS From: " + messages[i].getOriginatingAddress();
strMessage += " : ";
strMessage += messages[i].getMessageBody();
strMessage += "\n";
}
Log.e("SMS", strMessage);
Toast.makeText(context, strMessage, Toast.LENGTH_SHORT).show();
MainActivity main = new MainActivity();
main.reply(strMessage);
}
}
}
Wie Sie sehen können. Ich deklariere die Hauptklasse und analysiere den Wert für die Methode der Hauptklasse.
MainActivity main = neu MainActivity(); main.reply (strMessage);
Ich glaube nicht, dass dies der richtige Weg ist. es funktioniert sowieso nicht
Sie haben Recht. Du solltest keine neuen Aktivitäten wie diese machen. –
Ok, ich bin froh zu wissen, dass ich falsch liege. Aber was ist der richtige Weg, dies zu tun? : D –
Sie haben einen Empfänger, also müssen Sie eine Nachricht an ihn senden. Sie könnten auch in der Verwendung einer Bibliothek wie EventBus –