Merge "Implement new method for handling SMS/MMS on the platform" into klp-dev
This commit is contained in:
@@ -65,7 +65,7 @@ public class AppOpsManager {
|
||||
|
||||
// when adding one of these:
|
||||
// - increment _NUM_OP
|
||||
// - add rows to sOpToSwitch, sOpNames, sOpPerms
|
||||
// - add rows to sOpToSwitch, sOpNames, sOpPerms, sOpDefaultMode
|
||||
// - add descriptive strings to Settings/res/values/arrays.xml
|
||||
// - add the op to the appropriate template in AppOpsState.OpsTemplate (settings app)
|
||||
|
||||
@@ -314,6 +314,55 @@ public class AppOpsManager {
|
||||
null, // no permission for high power location monitoring
|
||||
};
|
||||
|
||||
/**
|
||||
* This specifies the default mode for each operation.
|
||||
*/
|
||||
private static int[] sOpDefaultMode = new int[] {
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_IGNORED, // OP_WRITE_SMS
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
AppOpsManager.MODE_ALLOWED,
|
||||
};
|
||||
|
||||
/**
|
||||
* Retrieve the op switch that controls the given operation.
|
||||
* @hide
|
||||
@@ -338,6 +387,14 @@ public class AppOpsManager {
|
||||
return sOpPerms[op];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the default mode for the operation.
|
||||
* @hide
|
||||
*/
|
||||
public static int opToDefaultMode(int op) {
|
||||
return sOpDefaultMode[op];
|
||||
}
|
||||
|
||||
/**
|
||||
* Class holding all of the operation information associated with an app.
|
||||
* @hide
|
||||
|
||||
@@ -4354,6 +4354,12 @@ public final class Settings {
|
||||
*/
|
||||
public static final String NFC_PAYMENT_DEFAULT_COMPONENT = "nfc_payment_default_component";
|
||||
|
||||
/**
|
||||
* Specifies the package name currently configured to be the primary sms application
|
||||
* @hide
|
||||
*/
|
||||
public static final String SMS_DEFAULT_APPLICATION = "sms_default_application";
|
||||
|
||||
/**
|
||||
* Name of a package that the current user has explicitly allowed to see all of that
|
||||
* user's notifications.
|
||||
|
||||
@@ -113,7 +113,7 @@ public class AppOpsService extends IAppOpsService.Stub {
|
||||
uid = _uid;
|
||||
packageName = _packageName;
|
||||
op = _op;
|
||||
mode = AppOpsManager.MODE_ALLOWED;
|
||||
mode = AppOpsManager.opToDefaultMode(op);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,7 +191,7 @@ public class AppOpsService extends IAppOpsService.Stub {
|
||||
mHandler = new Handler();
|
||||
readState();
|
||||
}
|
||||
|
||||
|
||||
public void publish(Context context) {
|
||||
mContext = context;
|
||||
ServiceManager.addService(Context.APP_OPS_SERVICE, asBinder());
|
||||
@@ -379,7 +379,7 @@ public class AppOpsService extends IAppOpsService.Stub {
|
||||
}
|
||||
repCbs.addAll(cbs);
|
||||
}
|
||||
if (mode == AppOpsManager.MODE_ALLOWED) {
|
||||
if (mode == AppOpsManager.opToDefaultMode(op.op)) {
|
||||
// If going into the default mode, prune this op
|
||||
// if there is nothing else interesting in it.
|
||||
pruneOp(op, uid, packageName);
|
||||
@@ -435,8 +435,8 @@ public class AppOpsService extends IAppOpsService.Stub {
|
||||
Ops pkgOps = ent.getValue();
|
||||
for (int j=pkgOps.size()-1; j>=0; j--) {
|
||||
Op curOp = pkgOps.valueAt(j);
|
||||
if (curOp.mode != AppOpsManager.MODE_ALLOWED) {
|
||||
curOp.mode = AppOpsManager.MODE_ALLOWED;
|
||||
if (curOp.mode != AppOpsManager.opToDefaultMode(curOp.op)) {
|
||||
curOp.mode = AppOpsManager.opToDefaultMode(curOp.op);
|
||||
changed = true;
|
||||
callbacks = addCallbacks(callbacks, packageName, curOp.op,
|
||||
mOpModeWatchers.get(curOp.op));
|
||||
@@ -545,7 +545,7 @@ public class AppOpsService extends IAppOpsService.Stub {
|
||||
synchronized (this) {
|
||||
Op op = getOpLocked(AppOpsManager.opToSwitch(code), uid, packageName, false);
|
||||
if (op == null) {
|
||||
return AppOpsManager.MODE_ALLOWED;
|
||||
return AppOpsManager.opToDefaultMode(code);
|
||||
}
|
||||
return op.mode;
|
||||
}
|
||||
@@ -947,7 +947,7 @@ public class AppOpsService extends IAppOpsService.Stub {
|
||||
AppOpsManager.OpEntry op = ops.get(j);
|
||||
out.startTag(null, "op");
|
||||
out.attribute(null, "n", Integer.toString(op.getOp()));
|
||||
if (op.getMode() != AppOpsManager.MODE_ALLOWED) {
|
||||
if (op.getMode() != AppOpsManager.opToDefaultMode(op.getOp())) {
|
||||
out.attribute(null, "m", Integer.toString(op.getMode()));
|
||||
}
|
||||
long time = op.getTime();
|
||||
|
||||
Reference in New Issue
Block a user