diff options
author | Makoto Onuki <omakoto@google.com> | 2017-05-15 09:29:34 -0700 |
---|---|---|
committer | Makoto Onuki <omakoto@google.com> | 2017-05-16 12:33:43 -0700 |
commit | ad623015a119efe9b63f594af9c4703f40a0c27b (patch) | |
tree | c155e3ae4f41ce3f5798ad3117925c2e83195487 /tests/UsageStatsTest | |
parent | 28f0fd7a2d5b26a728d72984a8cf69ac0fcc4400 (diff) |
Restrict access to instant app data in usage stats
- Events are obfuscated based on whether the app was instant or not at
the time each event was logged.
- UsageStats are obfuscated based on whether each app is instant or
not at the moment.
Bug 38202133
Test: Manual test using UsageStatsTest and instant apps
Change-Id: I3c74309196b88d010d317cb0dd6749bf4624e876
Diffstat (limited to 'tests/UsageStatsTest')
-rw-r--r-- | tests/UsageStatsTest/Android.mk | 2 | ||||
-rw-r--r-- | tests/UsageStatsTest/AndroidManifest.xml | 8 | ||||
-rw-r--r-- | tests/UsageStatsTest/res/menu/main.xml | 2 | ||||
-rw-r--r-- | tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java | 43 |
4 files changed, 54 insertions, 1 deletions
diff --git a/tests/UsageStatsTest/Android.mk b/tests/UsageStatsTest/Android.mk index 5f7467a301d2..6b5c9998fc06 100644 --- a/tests/UsageStatsTest/Android.mk +++ b/tests/UsageStatsTest/Android.mk @@ -8,6 +8,8 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 +LOCAL_CERTIFICATE := platform + LOCAL_PACKAGE_NAME := UsageStatsTest include $(BUILD_PACKAGE) diff --git a/tests/UsageStatsTest/AndroidManifest.xml b/tests/UsageStatsTest/AndroidManifest.xml index 589674a8c0ad..c27be7b2d5bf 100644 --- a/tests/UsageStatsTest/AndroidManifest.xml +++ b/tests/UsageStatsTest/AndroidManifest.xml @@ -1,7 +1,13 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- + Note: Add android:sharedUserId="android.uid.system" to the root element to simulate the system UID + caller case. +--> + <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.tests.usagestats"> + package="com.android.tests.usagestats" + > <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" /> diff --git a/tests/UsageStatsTest/res/menu/main.xml b/tests/UsageStatsTest/res/menu/main.xml index e781058f1e42..4ccbc81ab317 100644 --- a/tests/UsageStatsTest/res/menu/main.xml +++ b/tests/UsageStatsTest/res/menu/main.xml @@ -2,4 +2,6 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/log" android:title="View Log"/> + <item android:id="@+id/call_is_app_inactive" + android:title="Call isAppInactive()"/> </menu> diff --git a/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java b/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java index c08c1a3f61c8..9429d9bbf89b 100644 --- a/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java +++ b/tests/UsageStatsTest/src/com/android/tests/usagestats/UsageStatsActivity.java @@ -16,12 +16,16 @@ package com.android.tests.usagestats; +import android.app.AlertDialog; import android.app.ListActivity; import android.app.usage.UsageStats; import android.app.usage.UsageStatsManager; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; +import android.text.InputType; +import android.text.TextUtils; import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.Menu; @@ -30,6 +34,7 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; +import android.widget.EditText; import android.widget.TextView; import java.util.ArrayList; @@ -69,6 +74,9 @@ public class UsageStatsActivity extends ListActivity { case R.id.log: startActivity(new Intent(this, UsageLogActivity.class)); return true; + case R.id.call_is_app_inactive: + callIsAppInactive(); + return true; default: return super.onOptionsItemSelected(item); @@ -81,6 +89,41 @@ public class UsageStatsActivity extends ListActivity { updateAdapter(); } + private void callIsAppInactive() { + 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)) { + showInactive(packageName); + } + } + }); + 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( + "isAppInactive(\"" + packageName + "\") = " + + (mUsageStatsManager.isAppInactive(packageName) ? "true" : "false")); + builder.show(); + } + private void updateAdapter() { long now = System.currentTimeMillis(); long beginTime = now - USAGE_STATS_PERIOD; |