从一个java类传递/发送字符串变量到android中的其他类

问题描述 投票:0回答:2

下面的代码给了我来自我的收件箱的电话号码和消息....我需要将电话号码和消息发送/发送到java class中的其他android(不是活动而是课程),以便保存在db中。

这可能是一个基本问题,但如果有人能提供帮助,我无法解决这个问题......这会很棒

主要活动:

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

            }
        }
    }
}
java android class
2个回答
0
投票

假设您有一个类来处理所有与DB相关的查询:DBQueries如果要保存消息和数字,那么您的DBQueries类应该有如下方法:

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

现在在上面的代码中,调用此方法如下:

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名为ReceiveText,那么在您的BroadcastReceiver中,您应该执行以下操作:

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

然后,在你的activity,你将需要getExtra如此:

Intent intent = getIntent();
String message = intent.getStringExtra("message");
© www.soinside.com 2019 - 2024. All rights reserved.