如何通过android中的消息获取位置

时间:2015-02-10 05:12:51

标签: android gps

基本上我想开发一个应用程序,其最终目标是根据他们所在的位置来标记员工的出勤率。首先,我将每个用户的位置输入到表中,然后将比较所获取的位置向每个移动员工发送消息。如果两个位置匹配,则将标记出勤。 所以我的问题是,是否可以通过发送消息来获取用户的位置?或者还有其他选项来获取用户的位置? 感谢

2 个答案:

答案 0 :(得分:0)

只有在用户手机上安装了一个应用程序时,才能执行此操作,该应用程序会使用某些特定文本(可以是密码)读取您的消息,然后使用SMSService回复用户的位置。如果你愿意,我可以给你一个代码示例。

您必须创建一个BroadcastReceiver

    import java.util.ArrayList;

    import org.json.JSONException;
    import org.json.JSONObject;

    import com.geoadrs.utility.ConnectionDetector;
    import com.geoadrs.utility.JSONParser;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.database.Cursor;
    import android.os.Bundle;

    import android.telephony.SmsMessage;
    import android.widget.Toast;

    public class SMSReceiver extends BroadcastReceiver {

        Intent in;
        String contact;


        Context c;


        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            c = context;
            Bundle bundle = intent.getExtras();
            SmsMessage[] msgs = null;
            data = c.getSharedPreferences("appdata", 0);
            String str = "SMS From: ";
            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]);
                    if (i == 0) {
                        contact = msgs[i].getOriginatingAddress();// getting
                                                                    // sender's
                                                                    // address
                        // str+= contact;
                        // str+=" : ";
                    }

                    str = msgs[i].getMessageBody().toString();

                }

                if (str.contains("your_password")) {
                    /*
                    use you location methoid to get location
                    */
                    //after getting location
                    SmsManager smsManager = SmsManager.getDefault();
                    smsManager.sendTextMessage(phoneNo, null, message+"with the location you want to send"+location, null, null);

                }
                // ---display the new SMS message---
                // Toast.makeText(context, str, Toast.LENGTH_SHORT).show();

            }
        }
    }

答案 1 :(得分:0)

看看Google Cloud Messaging。您可以向Android设备提供异步推送通知。收到“推送”通知后,客户可以将您的位置发送给您。墨菲先生有一个很好的example