下面的代码给了我来自我的收件箱的电话号码和消息....我需要将电话号码和消息发送/发送到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) {
}
}
}
}
}
假设您有一个类来处理所有与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) {
}
}
}
}
}
如果您的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");