我正试图在手机靠近某个位置时获取并更新。 我都尝试过使用addProximityAlert和requestLocationUpdates
LocationManager lm =(LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location l = lm.getLastKnownLocation("gps");
Intent intent = new Intent("eu.mauriziopz.gps.ProximityAlert");
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
lm.addProximityAlert(12, 12, 100, 1000000, pIntent);
这个从未激发意图(我知道它可以工作,因为我可以手动启动它)。 我尝试使用一个监听器但它只执行一次。无论我多少次更新gps,它都不会被再次调用
ProximityListener pl = new ProximityListener();
lm. requestLocationUpdates("gps", 2000, 10, pl);
这是活动的代码(在第一种情况下调用)
public class ProximityAlert extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.d("intent", "Hi");
finish();
}
这是听众
public class ProximityListener implements LocationListener {
String DEBUG_TAG = "ProximityListener";
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
Log.d(DEBUG_TAG, location.toString());
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
由于
答案 0 :(得分:5)
我认为问题在于你如何定义Intent / PendingIntent。有两种方法可以使用Intent启动Activity,而你所包含的代码看起来就像是两者之间的交叉。
启动Activity的标准方法是使用Intent构造函数,该构造函数接受当前上下文和Activity的类,并使用getActivity
上的PendingIntent
方法创建PendingIntent:
Intent intent = new Intent(this, ProximityAlert.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
或者,您可以在Manifest中为您的Activity添加IntentReceiver
,并使用侦听特定操作的IntentFilter(例如“eu.mauriziopz.gps.ProximityAlert”)。但是,在这种情况下,您需要使用PendingIntent.getBroadcast
来创建PendingIntent。
Intent intent = new Intent("eu.mauriziopz.gps.ProximityAlert");
PendingIntent pIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
在所有情况下,您都需要确保您已获得清单中定义的基于位置的服务的正确权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
此外,您可以考虑使用静态常量LocationManager.GPS_PROVIDER
,而不是使用字符串“gps”。
答案 1 :(得分:1)
Intent intent = new Intent("com.sccp.fourgdummy.REQUEST_DFGS");
intent.putExtra("launch_tab", "otp");
PendingIntent proximityIntent = PendingIntent.getActivity(this, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
这很重要:Intent.FLAG_ACTIVITY_NEW_TASK
答案 2 :(得分:0)
我认为你不应该在onCreate方法中终止Activity(通过调用finish())。