Java 如何为BroadcastReceiver扩展类传递值
我想将一些字符串值传递给我的all activity类。但我无法传递Broadcastreceiver类的值,因为它还扩展了Broadcastreceiver类。因此,我不能使用Intent或SharedReferences,也不能在此类中创建对象。我怎样才能得到这个类中的值Java 如何为BroadcastReceiver扩展类传递值,java,android,Java,Android,我想将一些字符串值传递给我的all activity类。但我无法传递Broadcastreceiver类的值,因为它还扩展了Broadcastreceiver类。因此,我不能使用Intent或SharedReferences,也不能在此类中创建对象。我怎样才能得到这个类中的值 public class SMSRecevir extends BroadcastReceiver { private BroadcastReceiver mReceiver = new BroadcastRec
public class SMSRecevir extends BroadcastReceiver {
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String nb = intent.getStringExtra("fgivnb");
phonenumb=nb;
}
};
String phonenumb;
String phonenumb2;
double lati,lati1,lati2,lati3;
double longi,longi1,longi2,longi3;
int v,bb;
char n= 'N';
char ar2[] = new char[30];
char ar221[] = new char[7];
char ar222[] = new char[7];
char ar223[] = new char[7];
char ar231[] = new char[7];
char ar232[] = new char[7];
char ar233[] = new char[7];
char ar3[] = new char[30];
char ml;
@SuppressWarnings("UnnecessaryParentheses")
@Override
public void onReceive(Context context, Intent intent)
{
if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED"))
{
// Retrieves a map of extended data from the intent.
final Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
try
{
if (bundle != null) {
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i = 0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
str += "SMS from " + msgs[i].getOriginatingAddress();
str += " :";
str += msgs[i].getMessageBody().toString();
str += "\n";
}
String replyPhone = msgs[0].getOriginatingAddress();
String request = msgs[0].getMessageBody().toString();
if (replyPhone.equals(phonenumb)){
char[] arrcn = request.toCharArray();
ml = arrcn[0];
if (ml == 'l') {
Intent my = new Intent(context, Ring.class);
context.startActivity(my);
} else {
char[] ar = request.toCharArray();
ar2[0] = ar[1];
ar2[1] = ar[2];
ar2[2] = ar[3];
ar2[3] = ar[4];
ar2[4] = ar[5];
ar2[5] = ar[6];
ar2[6] = ar[7];
ar2[7] = ar[8];
ar2[8] = ar[9];
ar2[9] = ar[10];
ar3[0] = ar[14];
ar3[1] = ar[15];
ar3[2] = ar[16];
ar3[3] = ar[17];
ar3[4] = ar[18];
ar3[5] = ar[19];
ar3[6] = ar[20];
ar3[7] = ar[21];
ar3[8] = ar[22];
ar3[9] = ar[23];
ar3[10] = ar[24];
for(v = 0;v <2;v++)
{
ar221[v] = ar2[v];
}
for (v = 0;v < 2;v++)
{
ar222[v] = ar2[v+2];
}
for (v = 0;v <5;v++){
ar223[v] = ar2[v+5];
}
String lat1 = new String(ar221);
String lat2 = new String(ar222);
String lat3 = new String(ar223);
for(v=0;v<3;v++)
{
ar231[v] = ar3[v];
}
for (v=0;v<2;v++)
{
ar232[v] = ar3[v+3];
}
for (v=0;v<5;v++){
ar233[v] = ar3[v+6];
}
String lon1 = new String(ar231);
String lon2 = new String(ar232);
String lon3 = new String(ar233);
lati1 = Double.valueOf(lat1.trim()).doubleValue();
lati2 = Double.valueOf(lat2.trim()).doubleValue();
lati3 = Double.valueOf(lat3.trim()).doubleValue();
longi1 = Double.valueOf(lon1.trim()).doubleValue();
longi2 = Double.valueOf(lon2.trim()).doubleValue();
longi3 = Double.valueOf(lon3.trim()).doubleValue();
lati3=lati3/1000;
longi3=longi3/1000;
lati = lati1+(lati2/60)+(lati3/3600);
longi = longi1+(longi2/60)+(longi3/3600);
//Toast.makeText(context,String.valueOf(lati), Toast.LENGTH_SHORT).show();
//Toast.makeText(context,String.valueOf(longi), Toast.LENGTH_SHORT).show();
Intent my = new Intent(context, Map2.class);
my.putExtra("key1", lati);
my.putExtra("key2", longi);
my.putExtra("nb6",phonenumb);
context.startActivity(my);
}
}
}
}
catch (Exception e)
{
Log.e("MyReceiver", "Exception smsReceiver" +e);
}
}//close if
}
}
她是我的密码:
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Firstlog extends AppCompatActivity {
EditText mEdit;
Button B11;
String nnb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.drawable.ic_action_directions_car);
getSupportActionBar().setDisplayUseLogoEnabled(true);
setContentView(R.layout.firstlog);
B11 = (Button)findViewById(R.id.button2);
mEdit = (EditText)findViewById(R.id.editText6);
B11.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View view)
{
String nb = mEdit.getText().toString();
nnb=nb;
Log.v("EditText value=",mEdit.getText().toString());
Intent intent = new
Intent("INTENT_NAME").putExtra("fgivnb",nnb);
LocalBroadcastManager.getInstance(Firstlog.this).sendBroadcast(intent);
Intent my2 = newIntent(Firstlog.this,MapsActivity.class);
my2.putExtra("fnb",nnb);
startActivity(my2);
}
});
}
public String getnb(){
return nnb;
}
}
我想传递这个类的值
public class SMSRecevir extends BroadcastReceiver {
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String nb = intent.getStringExtra("fgivnb");
phonenumb=nb;
}
};
String phonenumb;
String phonenumb2;
double lati,lati1,lati2,lati3;
double longi,longi1,longi2,longi3;
int v,bb;
char n= 'N';
char ar2[] = new char[30];
char ar221[] = new char[7];
char ar222[] = new char[7];
char ar223[] = new char[7];
char ar231[] = new char[7];
char ar232[] = new char[7];
char ar233[] = new char[7];
char ar3[] = new char[30];
char ml;
@SuppressWarnings("UnnecessaryParentheses")
@Override
public void onReceive(Context context, Intent intent)
{
if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED"))
{
// Retrieves a map of extended data from the intent.
final Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
try
{
if (bundle != null) {
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i = 0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
str += "SMS from " + msgs[i].getOriginatingAddress();
str += " :";
str += msgs[i].getMessageBody().toString();
str += "\n";
}
String replyPhone = msgs[0].getOriginatingAddress();
String request = msgs[0].getMessageBody().toString();
if (replyPhone.equals(phonenumb)){
char[] arrcn = request.toCharArray();
ml = arrcn[0];
if (ml == 'l') {
Intent my = new Intent(context, Ring.class);
context.startActivity(my);
} else {
char[] ar = request.toCharArray();
ar2[0] = ar[1];
ar2[1] = ar[2];
ar2[2] = ar[3];
ar2[3] = ar[4];
ar2[4] = ar[5];
ar2[5] = ar[6];
ar2[6] = ar[7];
ar2[7] = ar[8];
ar2[8] = ar[9];
ar2[9] = ar[10];
ar3[0] = ar[14];
ar3[1] = ar[15];
ar3[2] = ar[16];
ar3[3] = ar[17];
ar3[4] = ar[18];
ar3[5] = ar[19];
ar3[6] = ar[20];
ar3[7] = ar[21];
ar3[8] = ar[22];
ar3[9] = ar[23];
ar3[10] = ar[24];
for(v = 0;v <2;v++)
{
ar221[v] = ar2[v];
}
for (v = 0;v < 2;v++)
{
ar222[v] = ar2[v+2];
}
for (v = 0;v <5;v++){
ar223[v] = ar2[v+5];
}
String lat1 = new String(ar221);
String lat2 = new String(ar222);
String lat3 = new String(ar223);
for(v=0;v<3;v++)
{
ar231[v] = ar3[v];
}
for (v=0;v<2;v++)
{
ar232[v] = ar3[v+3];
}
for (v=0;v<5;v++){
ar233[v] = ar3[v+6];
}
String lon1 = new String(ar231);
String lon2 = new String(ar232);
String lon3 = new String(ar233);
lati1 = Double.valueOf(lat1.trim()).doubleValue();
lati2 = Double.valueOf(lat2.trim()).doubleValue();
lati3 = Double.valueOf(lat3.trim()).doubleValue();
longi1 = Double.valueOf(lon1.trim()).doubleValue();
longi2 = Double.valueOf(lon2.trim()).doubleValue();
longi3 = Double.valueOf(lon3.trim()).doubleValue();
lati3=lati3/1000;
longi3=longi3/1000;
lati = lati1+(lati2/60)+(lati3/3600);
longi = longi1+(longi2/60)+(longi3/3600);
//Toast.makeText(context,String.valueOf(lati), Toast.LENGTH_SHORT).show();
//Toast.makeText(context,String.valueOf(longi), Toast.LENGTH_SHORT).show();
Intent my = new Intent(context, Map2.class);
my.putExtra("key1", lati);
my.putExtra("key2", longi);
my.putExtra("nb6",phonenumb);
context.startActivity(my);
}
}
}
}
catch (Exception e)
{
Log.e("MyReceiver", "Exception smsReceiver" +e);
}
}//close if
}
}
公共类SMSRecevir扩展广播接收器{
private BroadcastReceiver mReceiver=新的BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
String nb=intent.getStringExtra(“fgivnb”);
phonenumb=nb;
}
};
字符串phonenumb;
字符串phonenumb2;
双纬,纬1,纬2,纬3;
双长,长1,长2,长3;
int v,bb;
字符n='n';
字符ar2[]=新字符[30];
字符ar221[]=新字符[7];
字符ar222[]=新字符[7];
字符ar223[]=新字符[7];
字符ar231[]=新字符[7];
字符ar232[]=新字符[7];
字符ar233[]=新字符[7];
字符ar3[]=新字符[30];
char-ml;
@抑制警告(“不必要的括号”)
@凌驾
公共void onReceive(上下文、意图)
{
if(intent.getAction().equals(“android.provider.Telephony.SMS_RECEIVED”))
{
//从意图检索扩展数据的映射。
final Bundle=intent.getExtras();
SmsMessage[]msgs=null;
字符串str=“”;
尝试
{
if(bundle!=null){
//---检索收到的SMS消息---
Object[]pdus=(Object[])bundle.get(“pdus”);
msgs=新SMS消息[PDU.length];
对于(int i=0;i 对于(v=0;v您可以在Firstlog
中启动Intent
活动来携带数据:
Intent i = new Intent(this, SMSRecevir.class);
i.putExtra("key", 1234);
startActivity(i);
在广播接收器(SMSRecevir
)中,使用onReceive
捕获目标数据:
@SuppressWarnings("UnnecessaryParentheses")
@Override
public void onReceive(Context context, Intent intent)
{
int yourKey = intent.getIntExtra("key");
// Your other code
}
传递值从何处到您的广播?我想将值FieldReass类传递给SMSReCeVIR类。您在广播接收器的开始还是在没有中间的地方发送?我想发送START。不工作…意图I =新意图(FrasLogLog.class,SMSReVeR.class),因为SMSRecevir.class不是一个活动,哪一行导致NULL?“android.provider.Telephony.SMS_RECEIVED”)……………..这一行