Issue 548, delete() before close() on FileConnection
[zxing.git] / rim / src / com / google / zxing / client / rim / AppPermissionsManager.java
1 /*\r
2  * Copyright 2008 ZXing authors\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *      http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 package com.google.zxing.client.rim;\r
18 \r
19 import com.google.zxing.client.rim.util.Log;\r
20 import net.rim.device.api.applicationcontrol.ApplicationPermissions;\r
21 import net.rim.device.api.applicationcontrol.ApplicationPermissionsManager;\r
22 \r
23 /**\r
24  * Requests the necessary permissions for the application.\r
25  *\r
26  * This code was contributed by LifeMarks.\r
27  *\r
28  * @author Matt York (matt@lifemarks.mobi)\r
29  */\r
30 final class AppPermissionsManager {\r
31 \r
32   private static final ApplicationPermissionsManager apm = ApplicationPermissionsManager.getInstance();\r
33 \r
34   private AppPermissionsManager() {\r
35   }\r
36 \r
37   /**\r
38    * Requests the required application permissions. Currently the required permissions are\r
39    * event injection (sending system level key strokes to other running applications) and\r
40    * accessing files (accessing the file when a qrcode image is saved to the file system).\r
41    */\r
42   static void setPermissions() {\r
43     setPermission(ApplicationPermissions.PERMISSION_EVENT_INJECTOR);\r
44     setPermission(ApplicationPermissions.PERMISSION_FILE_API);\r
45   }\r
46 \r
47   private static boolean setPermission(int permission) {\r
48     boolean updatedPermissions = false;\r
49     ApplicationPermissions ap = apm.getApplicationPermissions();\r
50     if (ap.containsPermissionKey(permission)) {\r
51       int eventInjectorPermission = ap.getPermission(permission);\r
52       Log.info("permission (" + permission + "): " + eventInjectorPermission);\r
53       if (eventInjectorPermission != ApplicationPermissions.VALUE_ALLOW) {\r
54         Log.info("Setting permission to VALUE_ALLOW.");\r
55         ap.addPermission(permission);\r
56         updatedPermissions = apm.invokePermissionsRequest(ap);\r
57       }\r
58     } else {\r
59       Log.info("Setting permission (" + permission + ") to VALUE_ALLOW.");\r
60       ap.addPermission(permission);\r
61       updatedPermissions = apm.invokePermissionsRequest(ap);\r
62     }\r
63     Log.info("updatedPermissions: " + updatedPermissions);\r
64     return updatedPermissions;\r
65   }\r
66 \r
67 }\r