Add TileService settings API

It will be used for long-clicks on TileServices when available.
Otherwise will default back to app info for the app providing the
tile.

Bug: 27269699
Change-Id: Iaf1ee1e6fe6e1357cda32c74bfdc0c26af0f5901
This commit is contained in:
Jason Monk
2016-02-19 16:43:00 -05:00
parent 76c67aa361
commit 724214a878
5 changed files with 28 additions and 0 deletions

View File

@@ -34579,6 +34579,7 @@ package android.service.quicksettings {
method public final void startActivityAndCollapse(android.content.Intent);
method public final void unlockAndRun(java.lang.Runnable);
field public static final java.lang.String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
field public static final java.lang.String ACTION_QS_TILE_PREFERENCES = "android.service.quicksettings.action.QS_TILE_PREFERENCES";
field public static final int TILE_MODE_ACTIVE = 2; // 0x2
field public static final int TILE_MODE_PASSIVE = 1; // 0x1
}

View File

@@ -37134,6 +37134,7 @@ package android.service.quicksettings {
method public final void startActivityAndCollapse(android.content.Intent);
method public final void unlockAndRun(java.lang.Runnable);
field public static final java.lang.String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
field public static final java.lang.String ACTION_QS_TILE_PREFERENCES = "android.service.quicksettings.action.QS_TILE_PREFERENCES";
field public static final int TILE_MODE_ACTIVE = 2; // 0x2
field public static final int TILE_MODE_PASSIVE = 1; // 0x1
}

View File

@@ -34594,6 +34594,7 @@ package android.service.quicksettings {
method public final void startActivityAndCollapse(android.content.Intent);
method public final void unlockAndRun(java.lang.Runnable);
field public static final java.lang.String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
field public static final java.lang.String ACTION_QS_TILE_PREFERENCES = "android.service.quicksettings.action.QS_TILE_PREFERENCES";
field public static final int TILE_MODE_ACTIVE = 2; // 0x2
field public static final int TILE_MODE_PASSIVE = 1; // 0x1
}

View File

@@ -16,6 +16,8 @@
package android.service.quicksettings;
import android.Manifest;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
import android.annotation.SystemApi;
import android.app.Dialog;
import android.app.Service;
@@ -73,6 +75,14 @@ import android.view.WindowManager;
*/
public class TileService extends Service {
/**
* An activity that provides a user interface for adjusting TileService preferences.
* Optional but recommended for apps that implement a TileService.
*/
@SdkConstant(SdkConstantType.INTENT_CATEGORY)
public static final String ACTION_QS_TILE_PREFERENCES
= "android.service.quicksettings.action.QS_TILE_PREFERENCES";
/**
* Action that identifies a Service as being a TileService.
*/

View File

@@ -15,9 +15,11 @@
*/
package com.android.systemui.qs.external;
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.graphics.drawable.Drawable;
import android.net.Uri;
@@ -160,10 +162,23 @@ public class CustomTile extends QSTile<QSTile.State> {
@Override
public Intent getLongClickIntent() {
Intent i = new Intent(TileService.ACTION_QS_TILE_PREFERENCES);
i.setPackage(mComponent.getPackageName());
i = resolveIntent(i);
if (i != null) {
return i;
}
return new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).setData(
Uri.fromParts("package", mComponent.getPackageName(), null));
}
private Intent resolveIntent(Intent i) {
ResolveInfo result = mContext.getPackageManager().resolveActivityAsUser(i, 0,
ActivityManager.getCurrentUser());
return result != null ? new Intent(TileService.ACTION_QS_TILE_PREFERENCES)
.setClassName(result.activityInfo.packageName, result.activityInfo.name) : null;
}
@Override
protected void handleClick() {
if (mTile.getState() == Tile.STATE_UNAVAILABLE) {