Use explicit intent to broadcast grayscale state changed

Query PackageManager for receivers that can handle the intent and send
an explicit intent to these receivers.

Change-Id: I06f500c20ae0a20d689cf0805b6a82247ea55e73
Fix: 118387886
Test: robotests
This commit is contained in:
Mill Chen
2019-03-27 14:27:50 -07:00
parent 6d90cdfea7
commit 2ef3dacad8
2 changed files with 27 additions and 6 deletions

View File

@@ -22,21 +22,27 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.hardware.display.ColorDisplayManager;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.homepage.contextualcards.ContextualCard;
import java.net.URISyntaxException;
import java.util.List;
import java.util.Objects;
public class GrayscaleConditionController implements ConditionalCardController {
static final int ID = Objects.hash("GrayscaleConditionController");
@VisibleForTesting
static final String ACTION_GRAYSCALE_CHANGED = "android.settings.action.GRAYSCALE_CHANGED";
private static final String TAG = "GrayscaleCondition";
private static final String ACTION_GRAYSCALE_CHANGED =
"android.settings.action.GRAYSCALE_CHANGED";
private static final IntentFilter GRAYSCALE_CHANGED_FILTER = new IntentFilter(
ACTION_GRAYSCALE_CHANGED);
@@ -113,9 +119,13 @@ public class GrayscaleConditionController implements ConditionalCardController {
}
private void sendBroadcast() {
final Intent intent = new Intent();
intent.setAction(ACTION_GRAYSCALE_CHANGED);
mAppContext.sendBroadcast(intent, Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS);
final PackageManager pm = mAppContext.getPackageManager();
final Intent intent = new Intent(ACTION_GRAYSCALE_CHANGED);
final List<ResolveInfo> receivers = pm.queryBroadcastReceivers(intent, 0 /* flags */);
for (ResolveInfo receiver : receivers) {
intent.setPackage(receiver.activityInfo.packageName);
mAppContext.sendBroadcast(intent);
}
}
public class Receiver extends BroadcastReceiver {