diff options
author | Amith Yamasani <yamasani@google.com> | 2018-03-11 14:42:06 -0700 |
---|---|---|
committer | Amith Yamasani <yamasani@google.com> | 2018-03-15 17:07:28 -0700 |
commit | 62ec27e97f68513c5637383fb72de469c5e903c1 (patch) | |
tree | ce5ceae6a6e2939674f9a6633acdb84a81e19bf5 /tests/UsageStatsTest | |
parent | 200de1cc86c38bc34317c500f808be40baf341d0 (diff) |
App Time Limits API in UsageStats
Allow setting groups of apps to control usage time limits on.
Applies only to activity time in the foreground.
Updated UsageStatsTest app to be able to add an observer for
a 30 second timeout across multiple comma separated package
names.
Bug: 74335821
Test: atest FrameworksServicesTests:AppTimeLimitControllerTests
Install and run frameworks/base/tests/UsageStatsTest
Change-Id: I677c30b4f211f7acf72c9766df3d8c1ac56a4b4e
Diffstat (limited to 'tests/UsageStatsTest')
-rw-r--r-- | tests/UsageStatsTest/AndroidManifest.xml | 1 | ||||
-rw-r--r-- | tests/UsageStatsTest/res/menu/main.xml | 2 | ||||
-rw-r--r-- | tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java | 56 |
3 files changed, 58 insertions, 1 deletions
diff --git a/tests/UsageStatsTest/AndroidManifest.xml b/tests/UsageStatsTest/AndroidManifest.xml index c27be7b2d5bf..66af45424fba 100644 --- a/tests/UsageStatsTest/AndroidManifest.xml +++ b/tests/UsageStatsTest/AndroidManifest.xml @@ -21,5 +21,6 @@ </activity> <activity android:name=".UsageLogActivity" /> + </application> </manifest> diff --git a/tests/UsageStatsTest/res/menu/main.xml b/tests/UsageStatsTest/res/menu/main.xml index 4ccbc81ab317..612267c85b1b 100644 --- a/tests/UsageStatsTest/res/menu/main.xml +++ b/tests/UsageStatsTest/res/menu/main.xml @@ -4,4 +4,6 @@ android:title="View Log"/> <item android:id="@+id/call_is_app_inactive" android:title="Call isAppInactive()"/> + <item android:id="@+id/set_app_limit" + android:title="Set App Limit" /> </menu> diff --git a/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java b/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java index 9429d9bbf89b..3d8ce21a2c00 100644 --- a/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java +++ b/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java @@ -18,6 +18,7 @@ package com.android.tests.usagestats; import android.app.AlertDialog; import android.app.ListActivity; +import android.app.PendingIntent; import android.app.usage.UsageStats; import android.app.usage.UsageStatsManager; import android.content.Context; @@ -36,14 +37,17 @@ import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.EditText; import android.widget.TextView; +import android.widget.Toast; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Map; +import java.util.concurrent.TimeUnit; public class UsageStatsActivity extends ListActivity { private static final long USAGE_STATS_PERIOD = 1000 * 60 * 60 * 24 * 14; + private static final String EXTRA_KEY_TIMEOUT = "com.android.tests.usagestats.extra.TIMEOUT"; private UsageStatsManager mUsageStatsManager; private Adapter mAdapter; private Comparator<UsageStats> mComparator = new Comparator<UsageStats>() { @@ -59,6 +63,20 @@ public class UsageStatsActivity extends ListActivity { mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE); mAdapter = new Adapter(); setListAdapter(mAdapter); + Bundle extras = getIntent().getExtras(); + if (extras != null && extras.containsKey(UsageStatsManager.EXTRA_TIME_USED)) { + System.err.println("UsageStatsActivity " + extras); + Toast.makeText(this, "Timeout of observed app\n" + extras, Toast.LENGTH_SHORT).show(); + } + } + + @Override + public void onNewIntent(Intent intent) { + Bundle extras = intent.getExtras(); + if (extras != null && extras.containsKey(UsageStatsManager.EXTRA_TIME_USED)) { + System.err.println("UsageStatsActivity " + extras); + Toast.makeText(this, "Timeout of observed app\n" + extras, Toast.LENGTH_SHORT).show(); + } } @Override @@ -77,7 +95,9 @@ public class UsageStatsActivity extends ListActivity { case R.id.call_is_app_inactive: callIsAppInactive(); return true; - + case R.id.set_app_limit: + callSetAppLimit(); + return true; default: return super.onOptionsItemSelected(item); } @@ -116,6 +136,40 @@ public class UsageStatsActivity extends ListActivity { builder.show(); } + private void callSetAppLimit() { + final AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle("Enter package name"); + final EditText input = new EditText(this); + input.setInputType(InputType.TYPE_CLASS_TEXT); + input.setHint("com.android.tests.usagestats"); + builder.setView(input); + + builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + final String packageName = input.getText().toString().trim(); + if (!TextUtils.isEmpty(packageName)) { + String[] packages = packageName.split(","); + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.setClass(UsageStatsActivity.this, UsageStatsActivity.class); + intent.setPackage(getPackageName()); + intent.putExtra(EXTRA_KEY_TIMEOUT, true); + mUsageStatsManager.registerAppUsageObserver(1, packages, + 30, TimeUnit.SECONDS, PendingIntent.getActivity(UsageStatsActivity.this, + 1, intent, 0)); + } + } + }); + builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.cancel(); + } + }); + + builder.show(); + } + private void showInactive(String packageName) { final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage( |