My application is receiving an Message in string form and i want it to pass in Map Activity to get the location. Basically the incoming message will be Long,Latitudes. But it always gives me an error 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);
}
});
}
}
Code in 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);
}
}
}
}
}
Code in my Activity:
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 Process: biketracker1.com.biketracker, PID: 30034 java.lang.RuntimeException: Unable to start activity ComponentInfo{biketracker1.com.biketracker/biketracker1.com.biketracker.MapsActivity}: java.lang.NullPointerException: println needs a message at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2393) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5351) at java.lang.reflect.Method.invoke(Native Method) at 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) Caused by: java.lang.NullPointerException: println needs a message at android.util.Log.println_native(Native Method) at android.util.Log.d(Log.java:139) at biketracker1.com.biketracker.MapsActivity.onCreate(MapsActivity.java:28) at android.app.Activity.performCreate(Activity.java:6020) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2284) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2393) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5351) at java.lang.reflect.Method.invoke(Native Method) at 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)