Я думаю, проблема в том, как вы определяете свой Intent / PendingIntent. Есть два способа запустить Activity с помощью Intent, и код, который вы включили, выглядит как нечто среднее между ними.
Стандартный способ запуска Activity - использовать конструктор Intent, который принимает текущий контекст и класс Activity, и использовать метод getActivity
в PendingIntent
для создания PendingIntent:
Intent intent = new Intent(this, ProximityAlert.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
В качестве альтернативы, вы можете добавить 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"/>
Кроме того, вместо использования строки "gps", вы можете использовать статическую константу LocationManager.GPS_PROVIDER
.