SecurityHandlerpublic final class SecurityHandler extends Object Contains methods to handle with the various security state information of a
a MIDlet suite. |
Fields Summary |
---|
private static SecurityToken | classSecurityTokenThe security token for this class. |
Constructors Summary |
---|
public SecurityHandler(byte[] ApiPermissions, String domain)Creates a security domain with a list of permitted actions or no list
to indicate all actions. The caller must be have permission for
Permissions.MIDP or be the first caller of
the method for this instance of the VM.
// No-op since we don't cache any permissions in Java
// Query native security manager every time
| public SecurityHandler(SecurityToken securityToken, byte[] ApiPermissions, String domain)Creates a security domain with a list of permitted actions or no list
to indicate all actions. The caller must be have permission for
Permissions.MIDP or be the first caller of
the method for this instance of the VM.
// Do not cache anything
// Ask native security manager everytime
|
Methods Summary |
---|
public static boolean | askUserForPermission(SecurityToken token, int title, int question, java.lang.String app, java.lang.String resource, java.lang.String extraValue)Ask the user yes/no permission question.
// Allow Push interrupt since the decision is already made
// at native Push level
return true;
| public boolean | checkForPermission(int permission, int title, int question, int oneshotQuestion, java.lang.String app, java.lang.String resource, java.lang.String extraValue)Check for permission and throw an exception if not allowed.
May block to ask the user a question.
The title, and question strings will be translated,
if a string resource is available.
Since the strings can have substitution token in them, if there is a
"%" it must changed to "%%". If a string has a %1, the app parameter
will be substituted for it. If a string has a "%2, the resource
parameter will be substituted for it. If a string has a %3, the
extraValue parameter will be substituted for it.
return checkForPermission(permission, title, question,
oneshotQuestion, app, resource, extraValue,
SecurityToken.STD_EX_MSG);
| public boolean | checkForPermission(int permission, int title, int question, int oneShotQuestion, java.lang.String app, java.lang.String resource, java.lang.String extraValue, java.lang.String exceptionMsg)Check for permission and throw an exception if not allowed.
May block to ask the user a question.
The title, question, and answer strings will be translated,
if a string resource is available.
Since the strings can have substitution token in them, if there is a
"%" it must changed to "%%". If a string has a %1, the app parameter
will be substituted for it. If a string has a "%2, the resource
parameter will be substituted for it. If a string has a %3, the
extraValue parameter will be substituted for it.
MIDletSuite current =
MIDletStateHandler.getMidletStateHandler().getMIDletSuite();
if (current == null) {
// Deny. Internal suite should not call this function
return true;
} else {
return !checkPermission0(current.getID(),
Permissions.getName(permission));
}
| public int | checkPermission(java.lang.String permission)Get the status of the specified permission.
If no API on the device defines the specific permission
requested then it must be reported as denied.
If the status of the permission is not known because it might
require a user interaction then it should be reported as unknown.
boolean found = false;
int i;
for (i = 0; i < Permissions.NUMBER_OF_PERMISSIONS; i++) {
if (Permissions.getName(i).equals(permission)) {
found = true;
break;
}
}
if (found) {
MIDletSuite current =
MIDletStateHandler.getMidletStateHandler().getMIDletSuite();
if (current != null) {
// query native security mgr for status
return checkPermissionStatus0(current.getID(), permission);
}
}
return 0; // Deny permission
| private native boolean | checkPermission0(java.lang.String suiteId, java.lang.String permission)Query native security manager for permission.
This call may block if user needs to be asked.
| private native int | checkPermissionStatus0(java.lang.String suiteId, java.lang.String permission)Get the status of the specified permission.
This is to implement public API MIDlet.checkPermission()
and will not block calling thread.
If no API on the device defines the specific permission
requested then it must be reported as denied.
If the status of the permission is not known because it might
require a user interaction then it should be reported as unknown.
| static void | initSecurityToken(SecurityToken token)Initializes the security token for this class, so it can
perform actions that a normal MIDlet Suite cannot.
if (classSecurityToken != null) {
return;
}
classSecurityToken = token;
|
|