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