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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user