Я загрузил демо из https://github.com/inthepocket/ibeacon-scanner-android, но когда я запускаю Android Oreo и Android Q, onHandlework () вызывается только в первый раз, он не будет вызываться позже. Почему это? Благодарю, если кто-нибудь может помочь. Заранее спасибо. Это код.
public class BeaconActivityService extends JobIntentService
{
private static final String TAG = "BeaconActivityService";
private static final int NOTIFICATION_ID = 65;
@Override
protected void onHandleWork(@NonNull Intent intent) {
final Beacon beacon = intent.getParcelableExtra(BluetoothScanBroadcastReceiver.IBEACON_SCAN_BEACON_DETECTION);
final boolean enteredBeacon = intent.getBooleanExtra(BluetoothScanBroadcastReceiver.IBEACON_SCAN_BEACON_ENTERED, false);
final boolean exitedBeacon = intent.getBooleanExtra(BluetoothScanBroadcastReceiver.IBEACON_SCAN_BEACON_EXITED, false);
if (beacon != null)
{
String logMessage = "";
if (enteredBeacon)
{
Log.d(TAG, "entered beacon " + beacon.getUUID());
logMessage = getString(R.string.notification_enter, beacon.getUUID(), beacon.getMajor(), beacon.getMinor());
}
else if (exitedBeacon)
{
Log.d(TAG, "exited beacon " + beacon.getUUID());
logMessage = getString(R.string.notification_exit, beacon.getUUID(), beacon.getMajor(), beacon.getMinor());
}
// Create notification channel if required
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
{
final NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
assert notificationManager != null;
notificationManager.createNotificationChannel(new NotificationChannel(TAG, "Beacon Activity", NotificationManager.IMPORTANCE_LOW));
}
final Notification notification = new NotificationCompat.Builder(this, TAG)
.setAutoCancel(true)
.setContentText(logMessage)
.setContentTitle("Beacon activity")
.setGroup(TAG)
.setPriority(NotificationCompat.PRIORITY_LOW)
.setSmallIcon(R.mipmap.ic_launcher)
.setStyle(new NotificationCompat.BigTextStyle().bigText(logMessage))
.build();
final NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(this);
notificationManagerCompat.notify(TAG, NOTIFICATION_ID, notification);
}
else
{
// TODO: 14/03/2018 Add error support
Toast.makeText(this, "Could not scan due to " + "an unknown error (TBA)", Toast.LENGTH_LONG).show();
}
}
}
Он не может судить по полученным сигналам маяка, enterBeacon и exitedBeacon, и в журнале нет вывода. Другими словами, onHandleWork () не вызывается. Это AndroidManifest
<service
android:name=".service.BeaconActivityService"
android:permission="android.permission.BIND_JOB_SERVICE"/>