2017-12-19 5 views
0

der Code unten gibt mir die Telefonnummer und Nachricht aus meinem Posteingang .... Ich muss beide Telefonnummer und Nachricht an andere senden java class in android (nicht die Aktivität aber Klasse) so in db zu speichern.Übertragung/send String-Variablen von einer Java-Klasse in andere

könnte es eine grundlegende Frage, aber ich bin nicht in der Lage es zu lösen, wenn jemand helfen könnte ... es wäre toll,

Haupttätigkeit:

import android.content.BroadcastReceiver; 
import android.content.ContentResolver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.telephony.SmsMessage; 
import android.widget.Toast; 

import static android.telephony.SmsMessage.createFromPdu; 

public class IncomingSms extends BroadcastReceiver { 


    String p,m; 

    final SmsManager sms = SmsManager.getDefault(); 


    public void onReceive(Context context, Intent intent) { 

     Bundle extras = intent.getExtras(); 

     if (extras != null) { 
      Object[] smsExtra = (Object[]) extras.get("pdus"); 
      ContentResolver contentResolver = context.getContentResolver(); 

      for (int i = 0; i < smsExtra.length; ++i) { 

       SmsMessage sms = createFromPdu((byte[]) smsExtra[i]); 

       String phoneNumber = sms.getDisplayOriginatingAddress(); 
       String message = sms.getDisplayMessageBody(); 

       try { 
        if (phoneNumber.contains("+92xxxxxxxxxx")) { //add phone number 
         int duration = Toast.LENGTH_LONG; 
         Toast toast = Toast.makeText(context, 
           "senderNum: " + phoneNumber + ", message: " + message, duration); 
         toast.show(); 

         p=phoneNumber; 
         m=message; 

        } 
       } catch (Exception e) { 
       } 

      } 
     } 
    } 
} 
+0

Können Sie mehr auf Ihr Problem bitte erweitern? Was meinst du mit "Senden an andere Java-Klasse in Android"? –

+0

Was meinst du mit "Senden an eine Klasse"? In Java können Sie nicht "zu einer Klasse senden". Sie können Folgendes festlegen: - statische Eigenschaften der Klasse (oder statische Methoden aufrufen), Instanzeigenschaften eines Objekts (oder Aufruf von Instanzmethoden). – Vadim

+0

@TomMac Ich habe 2 Klassen A und B, Klasse A enthält meine DB-Code und B enthält Daten, die ich auch in DB speichern möchte ... so dass ich meine Daten von Klasse B zu Klasse A senden musste, damit ich könnte es in meinem DB hinzufügen ..... Klasse B Code ist oben –

Antwort

0

Angenommen, Sie haben eine Klasse, die alle DB bezogenen Fragen genannt Griffe: DBQueries Wenn Sie Ihre Nachricht speichern möchten, und Nummer dann sollten Sie Ihre DBQueries Klasse eine Methode wie folgt:

public class DBQueries { 
    public void save(String number, String message) { 
     //Your db insertion code here 
    } 
} 

Jetzt in Ihrem obigen Code, rufen Sie diese Methode wie folgt:

public class IncomingSms extends BroadcastReceiver { 

    String p,m; 

    final SmsManager sms = SmsManager.getDefault(); 

    public void onReceive(Context context, Intent intent) { 

     Bundle extras = intent.getExtras(); 

     if (extras != null) { 
      Object[] smsExtra = (Object[]) extras.get("pdus"); 
      ContentResolver contentResolver = context.getContentResolver(); 

      for (int i = 0; i < smsExtra.length; ++i) { 

       SmsMessage sms = createFromPdu((byte[]) smsExtra[i]); 

       String phoneNumber = sms.getDisplayOriginatingAddress(); 
       String message = sms.getDisplayMessageBody(); 

       try { 
        if (phoneNumber.contains("+92xxxxxxxxxx")) { //add phone number 
         int duration = Toast.LENGTH_LONG; 
         DBQueries dbQueries = new DBQueries(); 
         dbQueries.save(phoneNumber, message); 
         Toast toast = Toast.makeText(context, 
           "senderNum: " + phoneNumber + ", message: " + message, duration); 
         toast.show(); 

         p=phoneNumber; 
         m=message; 

        } 
       } catch (Exception e) { 
       } 

      } 
     } 
    } 
} 
0

Wenn Sie Ihre activity haben genannt ReceiveText, dann in Ihrem BroadcastReceiver, sollten Sie folgendes tun:

Intent i = new Intent(context, ReceiveText.class); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.putExtra("message", message.getMessageBody()); 
context.startActivity(i); 

Dann in Ihrem activity, werden Sie auf getExtra müssen als so:

Intent intent = getIntent(); 
String message = intent.getStringExtra("message"); 
Verwandte Themen