Repository navigation
Expand file tree
/
Copy pathAndroidSystemServices.java
More file actions
73 lines (61 loc) · 3.65 KB
/
Copy pathAndroidSystemServices.java
File metadata and controls
73 lines (61 loc) · 3.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*
* Copyright 2010-2011 Pierre-Yves Ricau (py.ricau at gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.googlecode.androidannotations.model;
import java.util.HashMap;
import java.util.Map;
import javax.lang.model.type.TypeMirror;
import com.googlecode.androidannotations.processing.ActivityHolder;
import com.sun.codemodel.JFieldRef;
public class AndroidSystemServices {
private Map<String, String> registeredServices = new HashMap<String, String>();
public AndroidSystemServices() {
registeredServices.put("android.view.WindowManager", "android.content.Context.WINDOW_SERVICE");
registeredServices.put("android.view.LayoutInflater", "android.content.Context.LAYOUT_INFLATER_SERVICE");
registeredServices.put("android.app.ActivityManager", "android.content.Context.ACTIVITY_SERVICE");
registeredServices.put("android.os.PowerManager", "android.content.Context.POWER_SERVICE");
registeredServices.put("android.app.AlarmManager", "android.content.Context.ALARM_SERVICE");
registeredServices.put("android.app.NotificationManager", "android.content.Context.NOTIFICATION_SERVICE");
registeredServices.put("android.app.KeyguardManager", "android.content.Context.KEYGUARD_SERVICE");
registeredServices.put("android.location.LocationManager", "android.content.Context.LOCATION_SERVICE");
registeredServices.put("android.app.SearchManager", "android.content.Context.SEARCH_SERVICE");
registeredServices.put("android.os.Vibrator", "android.content.Context.VIBRATOR_SERVICE");
registeredServices.put("android.net.ConnectivityManager", "android.content.Context.CONNECTIVITY_SERVICE");
registeredServices.put("android.net.wifi.WifiManager", "android.content.Context.WIFI_SERVICE");
registeredServices.put("android.view.inputmethod.InputMethodManager", "android.content.Context.INPUT_METHOD_SERVICE");
registeredServices.put("android.app.UiModeManager", "android.content.Context.UI_MODE_SERVICE");
registeredServices.put("android.app.DownloadManager", "android.content.Context.DOWNLOAD_SERVICE");
registeredServices.put("android.hardware.SensorManager", "android.content.Context.SENSOR_SERVICE");
}
public boolean contains(TypeMirror serviceType) {
return registeredServices.containsKey(serviceType.toString());
}
public String getServiceConstant(TypeMirror serviceType) {
return registeredServices.get(serviceType.toString());
}
public JFieldRef getServiceConstant(TypeMirror serviceType, ActivityHolder holder) {
return extractIdStaticRef(holder, registeredServices.get(serviceType.toString()));
}
private JFieldRef extractIdStaticRef(ActivityHolder holder, String staticFieldQualifiedName) {
if (staticFieldQualifiedName != null) {
int fieldSuffix = staticFieldQualifiedName.lastIndexOf('.');
String fieldName = staticFieldQualifiedName.substring(fieldSuffix + 1);
String className = staticFieldQualifiedName.substring(0, fieldSuffix);
return holder.refClass(className).staticRef(fieldName);
} else {
return null;
}
}
}