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 ошибка примерно в то время, когда я ожидал получить обновление. Но со статикой я ничего не получаю

0 ответов

Другие вопросы по тегам