1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.alarmmanager.alarmtestapp.cts;
18 
19 import android.alarmmanager.alarmtestapp.cts.common.FgsTester;
20 import android.content.BroadcastReceiver;
21 import android.content.Context;
22 import android.content.Intent;
23 import android.util.Log;
24 
25 public class TestAlarmReceiver extends BroadcastReceiver{
26     private static final String TAG = TestAlarmReceiver.class.getSimpleName();
27     private static final String PACKAGE_NAME = "android.alarmmanager.alarmtestapp.cts";
28     private static final String INSTRUMENTATION_PACKAGE = "android.alarmmanager.cts";
29 
30     public static final String ACTION_REPORT_ALARM_EXPIRED = PACKAGE_NAME + ".action.ALARM_EXPIRED";
31     public static final String EXTRA_ALARM_COUNT = PACKAGE_NAME + ".extra.ALARM_COUNT";
32     public static final String EXTRA_ID = PACKAGE_NAME + ".extra.ID";
33 
34     @Override
onReceive(Context context, Intent intent)35     public void onReceive(Context context, Intent intent) {
36         final int count = intent.getIntExtra(Intent.EXTRA_ALARM_COUNT, 1);
37         final long id = intent.getLongExtra(EXTRA_ID, -1);
38         Log.d(TAG, "Alarm " + id + " expired " + count + " times");
39 
40         final Intent reportAlarmIntent = new Intent(ACTION_REPORT_ALARM_EXPIRED)
41                 .putExtra(EXTRA_ALARM_COUNT, count)
42                 .setPackage(INSTRUMENTATION_PACKAGE)
43                 .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY)
44                 .addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
45 
46         if (intent.getBooleanExtra(TestAlarmScheduler.EXTRA_TEST_FGS, false)) {
47             final String result = FgsTester.tryStartingFgs(context);
48             Log.d(TAG, "FGS start result: " + result);
49             reportAlarmIntent.putExtra(FgsTester.EXTRA_FGS_START_RESULT, result);
50         }
51         context.sendBroadcast(reportAlarmIntent);
52     }
53 }
54