Android 我应该如何通过短信发送我的GPS坐标?

Android 我应该如何通过短信发送我的GPS坐标?,android,android-intent,gps,sms,bundle,Android,Android Intent,Gps,Sms,Bundle,我在使用SmsManager通过SMS发送坐标时遇到问题 我在类之间传输变量时遇到问题,所以我使用了Intent和Bundle,但它只显示NULL。 这个方法错了吗? 我应该使用数据库吗?请帮忙 ZoltrixGPSActivity类 package com.zoltrix.gps; import android.app.Activity; import android.content.Context; import android.content.Intent; import android

我在使用SmsManager通过SMS发送坐标时遇到问题

我在类之间传输变量时遇到问题,所以我使用了Intent和Bundle,但它只显示NULL。 这个方法错了吗? 我应该使用数据库吗?请帮忙

ZoltrixGPSActivity类

package com.zoltrix.gps;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class ZoltrixGPSActivity extends Activity {

    TextView textLat;
    TextView textLong;
    TextView textAlt;
    TextView textPro;
    TextView textAcc;
    TextView textSpeed;
    public String onLocat;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btn1 = (Button) findViewById(R.id.buttonExit);
        btn1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // exit
                finish();
                System.exit(0);
            }
        });

        textLat = (TextView) findViewById(R.id.textLat);
        textLong = (TextView) findViewById(R.id.textLong);
        textAlt = (TextView) findViewById(R.id.textAlt);
        textPro = (TextView) findViewById(R.id.textPro);
        textAcc = (TextView) findViewById(R.id.textAcc);
        textSpeed = (TextView) findViewById(R.id.textSpeed);

        LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        LocationListener ll = new mylocationlistener();
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
    }

    class mylocationlistener implements LocationListener {

        public void onLocationChanged(Location location) {
            if (location != null) {
                double pLong = location.getLongitude();
                double pLat = location.getLatitude();
                double pAlt = location.getAltitude();
                String PPro = location.getProvider();
                float PAcc = location.getAccuracy();
                float PSpeed = location.getSpeed();

                textLat.setText(Double.toString(pLat));
                textLong.setText(Double.toString(pLong));
                textAlt.setText(Double.toString(pAlt));
                textPro.setText(PPro);
                textAcc.setText(Float.toString(PAcc));
                textSpeed.setText(Double.toString(PSpeed));

                Intent i = new Intent(ZoltrixGPSActivity.this,
                        SendSMSActivity.class);
                i.putExtra("wysokosc", pLat);
                i.putExtra("speed", PSpeed);
                startActivity(i);

            }

        }

        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub

        }

        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub

        }

        public void onStatusChanged(String provider, int status, Bundle extras) {
            // TODO Auto-generated method stub

        }

    }

}
package com.zoltrix.gps;

import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;

public class SendSMSActivity extends Activity {
    Button btnSendSMS;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnSendSMS = (Button) findViewById(R.id.btnSendSMS);
        btnSendSMS.setOnClickListener(new View.OnClickListener()

        {

            public void onClick(View v) {

                Bundle extras = getIntent().getExtras();

                String ALT = extras.getString("wysokosc");
                String SPE = extras.getString("speed");

                sendSMS("510100100", "wys" + " " + ALT + "   " + "spee" + " - "
                        + SPE);
            }

        });
    }

    // ---sends an SMS message to another device---
    private void sendSMS(String phoneNumber, String message) {
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, null, null);
    }

}
发送活动类

package com.zoltrix.gps;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class ZoltrixGPSActivity extends Activity {

    TextView textLat;
    TextView textLong;
    TextView textAlt;
    TextView textPro;
    TextView textAcc;
    TextView textSpeed;
    public String onLocat;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btn1 = (Button) findViewById(R.id.buttonExit);
        btn1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // exit
                finish();
                System.exit(0);
            }
        });

        textLat = (TextView) findViewById(R.id.textLat);
        textLong = (TextView) findViewById(R.id.textLong);
        textAlt = (TextView) findViewById(R.id.textAlt);
        textPro = (TextView) findViewById(R.id.textPro);
        textAcc = (TextView) findViewById(R.id.textAcc);
        textSpeed = (TextView) findViewById(R.id.textSpeed);

        LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        LocationListener ll = new mylocationlistener();
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
    }

    class mylocationlistener implements LocationListener {

        public void onLocationChanged(Location location) {
            if (location != null) {
                double pLong = location.getLongitude();
                double pLat = location.getLatitude();
                double pAlt = location.getAltitude();
                String PPro = location.getProvider();
                float PAcc = location.getAccuracy();
                float PSpeed = location.getSpeed();

                textLat.setText(Double.toString(pLat));
                textLong.setText(Double.toString(pLong));
                textAlt.setText(Double.toString(pAlt));
                textPro.setText(PPro);
                textAcc.setText(Float.toString(PAcc));
                textSpeed.setText(Double.toString(PSpeed));

                Intent i = new Intent(ZoltrixGPSActivity.this,
                        SendSMSActivity.class);
                i.putExtra("wysokosc", pLat);
                i.putExtra("speed", PSpeed);
                startActivity(i);

            }

        }

        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub

        }

        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub

        }

        public void onStatusChanged(String provider, int status, Bundle extras) {
            // TODO Auto-generated method stub

        }

    }

}
package com.zoltrix.gps;

import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;

public class SendSMSActivity extends Activity {
    Button btnSendSMS;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnSendSMS = (Button) findViewById(R.id.btnSendSMS);
        btnSendSMS.setOnClickListener(new View.OnClickListener()

        {

            public void onClick(View v) {

                Bundle extras = getIntent().getExtras();

                String ALT = extras.getString("wysokosc");
                String SPE = extras.getString("speed");

                sendSMS("510100100", "wys" + " " + ALT + "   " + "spee" + " - "
                        + SPE);
            }

        });
    }

    // ---sends an SMS message to another device---
    private void sendSMS(String phoneNumber, String message) {
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, null, null);
    }

}
显示

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.zoltrix.gps"
    android:versionCode="1"
    android:versionName="1.2" >

    <uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="8" />

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.SEND_SMS" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="com.zoltrix.gps.SendSMSActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.zoltrix.gps.ZoltrixGPSActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

您正在将double&float和take作为意图中的字符串,并尝试使两者相同

这样试试看

i.putExtra("wysokosc", pLat+"");
i.putExtra("speed", PSpeed+"");
试试看:

i.putExtra("wysokosc",Double.toString(pLat));
i.putExtra("speed", Float.toString(PSpeed));
而不是

i.putExtra("wysokosc", pLat);
i.putExtra("speed", PSpeed);
并在manifast.xml中声明ZoltrixGPSActivity:

<activity
            android:name=".ZoltrixGPSActivity" />

而不是

<activity
            android:name="com.zoltrix.gps.ZoltrixGPSActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

并在manifast中添加这些权限

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>


Thx,但我认为Manifest.xml在活动中仍然存在问题。安装后我有2个图标。然后声明ZoltrixGPSActivity,当我进行更改并单击“发送”时,应用程序正在崩溃:(@Zoltrix:如果在应用程序崩溃时发布logcat结果,则我们只需1秒即可解决您的问题再次感谢您的帮助,几乎所有功能都正常,但不会在屏幕上显示数据(前面刚刚闪过),但所有内容都在短信息中。您不必启动活动通常是[不在屏幕上显示数据(前面刚刚闪过)],谢谢您的帮助几乎所有内容都正常,只有信息不会显示在屏幕上(开始时只闪烁一次)。使用短信息,一切都正常。再次感谢