package com.mobilesorcery.sdk.builder.java;
import java.util.Arrays;
import java.util.Set;
import com.mobilesorcery.sdk.core.security.IApplicationPermissions;
import com.mobilesorcery.sdk.core.security.ICommonPermissions;
public class MIDletPermissions {
public static void toMIDletPermissions(IApplicationPermissions inPermissions, Set<String> outPermissions, Set<String> outOptPermissions) {
// Bluetooth
addMIDletPermissions(outPermissions, inPermissions.isPermissionRequested(ICommonPermissions.BLUETOOTH),
"javax.microedition.io.Connector.bluetooth.client",
"javax.microedition.io.Connector.bluetooth.server");
// Calendar
addMIDletPermissions(outPermissions, inPermissions.isPermissionRequested(ICommonPermissions.CALENDAR_READ),
"javax.microedition.pim.EventList.read",
"javax.microedition.pim.ToDoList.read");
addMIDletPermissions(outPermissions, inPermissions.isPermissionRequested(ICommonPermissions.CALENDAR_WRITE),
"javax.microedition.pim.EventList.write",
"javax.microedition.pim.ToDoList.write");
// Camera -- req. signing
addMIDletPermissions(outOptPermissions, inPermissions.isPermissionRequested(ICommonPermissions.CAMERA),
"javax.microedition.media.control.VideoControl.getSnapshot");
// Contacts
addMIDletPermissions(outPermissions, inPermissions.isPermissionRequested(ICommonPermissions.CONTACTS_READ),
"javax.microedition.pim.ContactList.read");
addMIDletPermissions(outPermissions, inPermissions.isPermissionRequested(ICommonPermissions.CONTACTS_WRITE),
"javax.microedition.pim.ContactList.write");
// File storage
addMIDletPermissions(outPermissions, inPermissions.isPermissionRequested(ICommonPermissions.FILE_STORAGE_READ),
"javax.microedition.io.Connector.file.read");
addMIDletPermissions(outPermissions, inPermissions.isPermissionRequested(ICommonPermissions.FILE_STORAGE_WRITE),
"javax.microedition.io.Connector.file.write");
// Internet & networking
addMIDletPermissions(outPermissions, inPermissions.isPermissionRequested(ICommonPermissions.INTERNET),
"javax.microedition.io.Connector.http");
addMIDletPermissions(outOptPermissions, inPermissions.isPermissionRequested(ICommonPermissions.INTERNET),
"javax.microedition.io.Connector.socket");
// Power mgmt - no permissions
// SMS & Messaging
addMIDletPermissions(outPermissions, inPermissions.isPermissionRequested(ICommonPermissions.SMS_RECEIVE),
"javax.microedition.io.Connector.sms",
"javax.wireless.messaging.mms.receive");
addMIDletPermissions(outPermissions, inPermissions.isPermissionRequested(ICommonPermissions.SMS_SEND),
"javax.microedition.io.Connector.sms",
"javax.wireless.messaging.mms.send");
// Vibrate - no permissions
// Location
addMIDletPermissions(outPermissions, anyOf(inPermissions, ICommonPermissions.LOCATION_FINE, ICommonPermissions.LOCATION_COARSE),
"javax.microedition.location.Location",
"javax.microedition.location.Orientation");
}
private static boolean anyOf(IApplicationPermissions permissions, String... commonPermissions) {
for (int i = 0; i < commonPermissions.length; i++) {
if (permissions.isPermissionRequested(commonPermissions[i])) {
return true;
}
}
return false;
}
private static void addMIDletPermissions(Set<String> result, boolean condition, String... permissions) {
if (condition) {
result.addAll(Arrays.asList(permissions));
}
}
}