Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 724214a8 authored by Jason Monk's avatar Jason Monk
Browse files

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
parent 76c67aa3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
  }
+1 −0
Original line number Diff line number Diff line
@@ -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
  }
+1 −0
Original line number Diff line number Diff line
@@ -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
  }
+10 −0
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
@@ -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) {