Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为BroadcastReceiver扩展类传递值_Java_Android - Fatal编程技术网

Java 如何为BroadcastReceiver扩展类传递值

Java 如何为BroadcastReceiver扩展类传递值,java,android,Java,Android,我想将一些字符串值传递给我的all activity类。但我无法传递Broadcastreceiver类的值,因为它还扩展了Broadcastreceiver类。因此,我不能使用Intent或SharedReferences,也不能在此类中创建对象。我怎样才能得到这个类中的值 public class SMSRecevir extends BroadcastReceiver { private BroadcastReceiver mReceiver = new BroadcastRec

我想将一些字符串值传递给我的all activity类。但我无法传递Broadcastreceiver类的值,因为它还扩展了Broadcastreceiver类。因此,我不能使用Intent或SharedReferences,也不能在此类中创建对象。我怎样才能得到这个类中的值

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”)……………..这一行