Merge "[Security] resolve RequestIgnoreBatteryOptimizations info disclosure" into sc-v2-dev

This commit is contained in:
YUKAI HUNG
2021-08-17 17:10:26 +00:00
committed by Android (Google) Code Review

View File

@@ -32,10 +32,11 @@ import com.android.settings.R;
public class RequestIgnoreBatteryOptimizations extends AlertActivity implements public class RequestIgnoreBatteryOptimizations extends AlertActivity implements
DialogInterface.OnClickListener { DialogInterface.OnClickListener {
static final String TAG = "RequestIgnoreBatteryOptimizations"; private static final String TAG = "RequestIgnoreBatteryOptimizations";
private static final boolean DEBUG = false;
private PowerWhitelistManager mPowerWhitelistManager; private PowerWhitelistManager mPowerWhitelistManager;
String mPackageName; private String mPackageName;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@@ -45,14 +46,14 @@ public class RequestIgnoreBatteryOptimizations extends AlertActivity implements
Uri data = getIntent().getData(); Uri data = getIntent().getData();
if (data == null) { if (data == null) {
Log.w(TAG, "No data supplied for IGNORE_BATTERY_OPTIMIZATION_SETTINGS in: " debugLog("No data supplied for IGNORE_BATTERY_OPTIMIZATION_SETTINGS in: "
+ getIntent()); + getIntent());
finish(); finish();
return; return;
} }
mPackageName = data.getSchemeSpecificPart(); mPackageName = data.getSchemeSpecificPart();
if (mPackageName == null) { if (mPackageName == null) {
Log.w(TAG, "No data supplied for IGNORE_BATTERY_OPTIMIZATION_SETTINGS in: " debugLog("No data supplied for IGNORE_BATTERY_OPTIMIZATION_SETTINGS in: "
+ getIntent()); + getIntent());
finish(); finish();
return; return;
@@ -60,7 +61,7 @@ public class RequestIgnoreBatteryOptimizations extends AlertActivity implements
PowerManager power = getSystemService(PowerManager.class); PowerManager power = getSystemService(PowerManager.class);
if (power.isIgnoringBatteryOptimizations(mPackageName)) { if (power.isIgnoringBatteryOptimizations(mPackageName)) {
Log.i(TAG, "Not should prompt, already ignoring optimizations: " + mPackageName); debugLog("Not should prompt, already ignoring optimizations: " + mPackageName);
finish(); finish();
return; return;
} }
@@ -69,7 +70,7 @@ public class RequestIgnoreBatteryOptimizations extends AlertActivity implements
try { try {
ai = getPackageManager().getApplicationInfo(mPackageName, 0); ai = getPackageManager().getApplicationInfo(mPackageName, 0);
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, "Requested package doesn't exist: " + mPackageName); debugLog("Requested package doesn't exist: " + mPackageName);
finish(); finish();
return; return;
} }
@@ -77,7 +78,7 @@ public class RequestIgnoreBatteryOptimizations extends AlertActivity implements
if (getPackageManager().checkPermission( if (getPackageManager().checkPermission(
Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, mPackageName) Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, mPackageName)
!= PackageManager.PERMISSION_GRANTED) { != PackageManager.PERMISSION_GRANTED) {
Log.w(TAG, "Requested package " + mPackageName + " does not hold permission " debugLog("Requested package " + mPackageName + " does not hold permission "
+ Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); + Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
finish(); finish();
return; return;
@@ -105,10 +106,13 @@ public class RequestIgnoreBatteryOptimizations extends AlertActivity implements
switch (which) { switch (which) {
case BUTTON_POSITIVE: case BUTTON_POSITIVE:
mPowerWhitelistManager.addToWhitelist(mPackageName); mPowerWhitelistManager.addToWhitelist(mPackageName);
setResult(RESULT_OK);
break; break;
case BUTTON_NEGATIVE: case BUTTON_NEGATIVE:
break; break;
} }
} }
private static void debugLog(String debugContent) {
if (DEBUG) Log.w(TAG, debugContent);
}
} }