Мое приложение получает сообщение в строковой форме, и я хочу, чтобы оно передало в Activity Map, чтобы получить его. В основном входящее сообщение будет длинным, широты. Но она всегда дает мне NullPointerException ошибкиКак передать входящее сообщение в другое действие?
enter code here
package biketracker1.com.biketracker;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
public class FirstActivity extends Activity {
private String latitudes;
private Button send;
private Button send2;
private Button send3;
private Button maps;
BroadcastReceiver reciever;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.firstactivity);
send = (Button) findViewById(R.id.send);
send2 = (Button) findViewById(R.id.send2);
send3 = (Button) findViewById(R.id.send3);
maps = (Button) findViewById(R.id.map);
sendMessageOne();
IntentFilter filter = new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
filter.setPriority(2147483647);
BroadcastReceiver receiver = new SmsReceiver();
registerReceiver(receiver, filter);
}
private void sendMessageOne() {
maps.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String value= "31.5546,74.3572";
Intent i = new Intent(FirstActivity.this,MapsActivity.class);
i.putExtra("messages",value);
startActivity(i);
}
});
send3.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage("Number",null,"3",null,null);
}
});
send2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage("Number",null,"2",null,null);
}
});
send.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage("Number",null,"1",null,null);
}
});
}
}
код в My Broadcast Receiver:
package biketracker1.com.biketracker;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
public class SmsReceiver extends BroadcastReceiver{
Context context;
private String latitudes;
@Override
public void onReceive(Context context, Intent intent)
{
Log.e("ABC", "** good");
if
(intent.getAction().equalsIgnoreCase
("android.provider.Telephony.SMS_RECEIVED))
{
Bundle bundle = intent.getExtras();
if (bundle != null)``
{
Object[] pdus = (Object[]) bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++)
{
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}`if (messages.length > -1)
{Log.e("ABC",messages[0].getMessageBody().toString());
// Toast.makeText(context, "SMS Message content" +messages, Toast.LENGTH_LONG).show();
Intent j = new Intent(context,MapsActivity.class);
j.putExtra("messages",latitudes);
context.startActivity(j);
}
}
}
}
}
код в моей деятельности:
package biketracker1.com.biketracker;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
private String getLangs;
private String [] getValues;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
Intent intent = getIntent();
getLangs = intent.getExtras().getString("messages");
getValues = getLangs.split(",");
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
LatLng sydney = new LatLng(Double.parseDouble(getValues[0]),Double.parseDouble(getValues[1]));
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Lahore"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
LogCat
05-19 10: 03: 34.17530034-30034/biketracker1.com.biketracker E/ABC: 31.437250,74.259407 05-19 10: 03: 35,213 30034-30034/biketracker1.com.biketracker E/AndroidRuntime: FATAL EXCEPTION: main Процесс: biketracker1.com.biketracker, PID: 30034 java.lang.RuntimeException: Не удается запустить активность ComponentInfo {biketracker1.com.biketracker/biketracker1.com.biketracker.MapsActivity}: java.lang.NullPointerException: println нуждается в сообщении на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2331) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2393) на android.app.ActivityThread.access $ 800 (ActivityThread.java:151) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1309) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:135) на android.app.ActivityThread.main (ActivityThread.java:5351) на java.lang.reflect.Method.invoke (собственный метод) на java .lang.reflect.Method.invoke (Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:908) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:703) Вызвано: java.lang.NullPointerException: println нуждается в сообщении на android.util.Log.println_native (собственный метод) на android.util.Log.d (Log.java:139) на biketracker1.com.biketracker .MapsActivity.onCreate (MapsActivity.java:28) на android.app.Activity.performCreate (Activity.java:6020) на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1105) на android.app.ActivityThread .performLaunchActivity (ActivityThread.java:2284) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2393) a t android.app.ActivityThread.access $ 800 (ActivityThread.java:151) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1309) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:135) на android.app.ActivityThread.main (ActivityThread.java:5351) на java.lang.reflect.Method.invoke (собственный метод) на java .lang.reflection.Method.invoke (Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:908) at com.android.internal.os.ZygoteInit.main (ZygoteInit. Java: 703)
Используйте 'вещать receiver' для обновления деятельности. [http://stackoverflow.com/questions/25215878/how-to-update-the-ui-of-activity-from-broadcastreceiver] –
вставьте свой logcat .. !! –
Я также рекомендую опубликовать свой журнал ошибок. – FormigaNinja