我的应用程序接收字符串形式的信息,我希望它在地图的活动传递给得到的位置。基本上传入的信息将是Long,Latitudes。但它总是给我一个错误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);
}
});
}
}
代码在我的广播接收器:
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的
十月5日至19日:03:34.17530034-30034/biketracker1.com.biketracker E/ABC:31.437250,74.259407 十月5日至19日:03:35.213 30034-30034/biketracker1.com.biketracker E/AndroidRuntime:致命例外:main 进程:biketracker1.com.biketracker,PID:30034 java.lang.RuntimeException:无法启动活动ComponentInfo {biketracker1.com.biketracker/biketracker1.com.biketracker.MapsActivity}:java.lang.NullPointerException: println需要消息 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331) at 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) 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) 引起:java.lang.NullPointerException:println需要一条消息 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) 在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) 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。方法.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