BroadcastReceiver не получает данные из API переходов
Я пытался следовать нескольким учебникам по настройке API Transitions в Android. Я работал с BroadcastReceiver и получал данные, пока приложение активно, но не смог найти точного рабочего примера, когда BroadcastReceiver получал данные, когда приложение закрыто. (в моем примере это даже не работает на переднем плане)
Здесь я зарегистрировал это в декларации:
<receiver android:name="com.example.usr.parkingreminder.MainActivity$ActivityTransitionBroadcastReceiver"
android:exported="false"
android:permission="com.google.android.gms.permission.ACTIVITY_RECOGNITION">
<intent-filter>
<action android:name="com.mypackage.ACTION_PROCESS_ACTIVITY_TRANSITIONS" />
</intent-filter>
</receiver>
и мой код активности:
public class MainActivity extends AppCompatActivity {
private final String TAG = "dbg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<ActivityTransition> transitions = new ArrayList<>();
transitions.add(
new ActivityTransition.Builder()
.setActivityType(DetectedActivity.ON_FOOT)
.setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER)
.build());
transitions.add(
new ActivityTransition.Builder()
.setActivityType(DetectedActivity.ON_FOOT)
.setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT)
.build());
transitions.add(
new ActivityTransition.Builder()
.setActivityType(DetectedActivity.STILL)
.setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER)
.build());
transitions.add(
new ActivityTransition.Builder()
.setActivityType(DetectedActivity.STILL)
.setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT)
.build());
ActivityTransitionRequest request = new ActivityTransitionRequest(transitions);
Intent intent = new Intent(MainActivity.this, ActivityTransitionBroadcastReceiver.class);
intent.setAction(ActivityTransitionBroadcastReceiver.INTENT_ACTION);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
Task<Void> task = ActivityRecognition.getClient(MainActivity.this)
.requestActivityTransitionUpdates(request, pendingIntent);
task.addOnSuccessListener(
new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void result) {
Log.i(TAG, "Transitions Api was successfully registered.");
}
});
task.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Log.e(TAG, "Transitions Api could not be registered: " + e);
}
});
}
public static class ActivityTransitionBroadcastReceiver extends BroadcastReceiver {
public static final String INTENT_ACTION = "com.mypackage" + ".ACTION_PROCESS_ACTIVITY_TRANSITIONS";
@Override
public void onReceive(Context context, Intent intent) {
Log.i("dbg","got action "+intent.getAction());
}
}
}
Если я удаляю статические из BroadcastReceiver, то я получаю class has no zero argument constructor
ошибка примерно в то время, когда я ожидал получить обновление. Но со статикой я ничего не получаю