/
AndroidManifest.xml
135 lines (113 loc) · 7.43 KB
/
AndroidManifest.xml
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.oasisfeng.island.engine">
<uses-feature android:name="android.software.device_admin" android:required="true" />
<uses-feature android:name="android.software.managed_users" android:required="true" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- IslandProvisioning & ShuttleKeeper, required if targeting API 28+ -->
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" tools:ignore="ProtectedPermissions" /> <!-- ServiceShuttle -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <!-- Required to start ACTION_INSTALL_PACKAGE since Android O -->
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" tools:ignore="ProtectedPermissions" /> <!-- TBD -->
<application tools:ignore="AllowBackup,GoogleAppIndexingWarning,MissingApplicationIcon">
<activity android:name="com.oasisfeng.island.shortcut.AppLaunchShortcut"
android:hardwareAccelerated="false"
android:excludeFromRecents="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:clearTaskOnLaunch="true"
android:taskAffinity=":shortcut"
android:launchMode="singleTask" > <!-- Most important attribute: launchMode="singleTask" -->
<intent-filter android:priority="-1"> <!-- Negative priority cause intent matching preferably in profile -->
<action android:name="com.oasisfeng.island.action.LAUNCH_CLONE" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="target" />
</intent-filter>
<intent-filter>
<action android:name="com.oasisfeng.island.action.LAUNCH_APP" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="target" />
</intent-filter>
</activity>
<activity android:name="com.oasisfeng.island.api.ApiActivity"
android:hardwareAccelerated="false"
android:excludeFromRecents="true"
android:alwaysRetainTaskState="true"
android:taskAffinity=":api"
android:theme="@style/android:Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="com.oasisfeng.island.action.FREEZE" />
<action android:name="com.oasisfeng.island.action.UNFREEZE" />
<action android:name="com.oasisfeng.island.action.LAUNCH" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="package" />
<data android:scheme="packages" /> <!-- ssp: comma-separated package names -->
</intent-filter>
</activity>
<receiver android:name="com.oasisfeng.island.api.ApiReceiver">
<intent-filter>
<action android:name="com.oasisfeng.island.action.FREEZE" />
<action android:name="com.oasisfeng.island.action.UNFREEZE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="package" />
<data android:scheme="packages" /> <!-- ssp: comma-separated package names -->
</intent-filter>
</receiver>
<!-- ServiceShuttleActivity (non-exported) -->
<activity android:name="com.oasisfeng.island.InternalActivity$_1"
android:exported="false"
android:hardwareAccelerated="false"
android:excludeFromRecents="true"
android:theme="@style/android:Theme.NoDisplay"
android:taskAffinity=":shuttle" >
<intent-filter>
<action android:name="com.oasisfeng.island.action.BIND_SERVICE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<service android:name="com.oasisfeng.island.shuttle.MethodShuttle$Service" android:exported="false">
<intent-filter android:priority="-1">
<action android:name="com.oasisfeng.island.shuttle.IMethodShuttle" />
</intent-filter>
</service>
<!-- IslandProvisioning -->
<service android:name="com.oasisfeng.island.InternalService$_1" android:directBootAware="true" tools:targetApi="n" />
<service android:name="com.oasisfeng.island.shuttle.ShuttleKeeper" />
<service android:name=".IslandManagerService$AidlService" android:exported="false">
<intent-filter>
<action android:name="com.oasisfeng.island.engine.IIslandManager" />
</intent-filter>
</service>
<receiver android:name="com.oasisfeng.island.IslandDeviceAdminReceiver"
android:permission="android.permission.BIND_DEVICE_ADMIN" >
<meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
<action android:name="android.app.action.PROFILE_PROVISIONING_COMPLETE" />
</intent-filter>
</receiver>
<!-- ManualProvisioningReceiver -->
<receiver android:name="com.oasisfeng.island.InternalReceiver$_1" android:exported="false" android:directBootAware="true" tools:targetApi="n">
<intent-filter android:priority="9999"> <!-- High priority to ensure being executed as early as possible -->
<action android:name="android.intent.action.USER_INITIALIZE" />
<action android:name="android.app.action.DEVICE_OWNER_CHANGED" />
</intent-filter>
</receiver>
<!-- AutoIncrementalProvision, authority must be consistent with code in MainActivity. -->
<provider android:authorities="${applicationId}.internal.E0" android:name="com.oasisfeng.island.InternalProvider$_0" android:exported="false"/>
<!-- AppUpdateReceiver -->
<receiver android:name="com.oasisfeng.island.InternalReceiver$_2" android:exported="false" android:directBootAware="true" tools:targetApi="n">
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
</receiver>
<!-- ShortcutShuttle -->
<receiver android:name="com.oasisfeng.island.InternalReceiver$_3" tools:ignore="ExportedReceiver"> <!-- Exported without permission requirement, for wider compatibility -->
<intent-filter>
<action android:name="com.android.launcher.action.INSTALL_SHORTCUT"/>
</intent-filter>
</receiver>
</application>
</manifest>