2017-12-19 13 views
0

아래 코드는 내받은 편지함의 전화 번호와 메시지를 제공합니다. 전화 번호와 메시지를 모두 androidjava class으로 전송/전송해야합니다. (활동이 아니라 클래스) db 에 저장하십시오.하나의 Java 클래스에서 다른 Java 클래스로 문자열 변수를 전송하여 안드로이드에있는

가 될 것 그것은 기본적인 질문이 될 수도 있지만 나는 누군가가 도움이 될 수 있다면 ... 그것을 해결할 수없는 나는 큰

주요 활동 :

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

문제를 자세히 해결할 수 있습니까? "안드로이드에있는 다른 자바 클래스에 보내"는 것은 무엇을 의미합니까? –

+0

"수업에 보내기"란 무엇을 의미합니까? Java에서는 "클래스에 전송"할 수 없습니다. 당신은 다음을 설정할 수 있습니다 : - 클래스 정적 속성 (또는 정적 메소드 호출), 객체의 인스턴스 속성 (또는 인스턴스 메소드 호출). – Vadim

+0

@TomMac 나는 2 개의 클래스 A와 B를 가지고 있고, 클래스 A는 내 db 코드를 포함하고 B는 내가 db에 저장하고자하는 데이터를 가지고있다. 그래서 나는 클래스 B에서 클래스 A로 데이터를 보내야한다. 내 DB에 그것을 추가 할 수 있습니다 ..... 클래스 B 코드는 위에 주어진다 –

답변

0

의 당신이 모든 DB 관련 질의라는 처리하는 클래스가 있다고 가정 해 봅시다 다음과 같이이 방법을

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

을 이제 위의 코드에서, 전화 : 수는 다음 DBQueries 클래스는 다음과 같은 방법이 있어야합니다

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

당신이 당신의 activity이있는 경우

Intent i = new Intent(context, ReceiveText.class); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.putExtra("message", message.getMessageBody()); 
context.startActivity(i); 
,369 : 당신의 BroadcastReceiver에 다음 ReceiveText을, 이름, 다음을 수행해야합니다 당신의 activity에서 그런

, 당신은 너무 getExtra해야합니다 DBQueries 당신이 당신의 메시지를 저장하려면 및 :

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