summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Android.mk6
-rw-r--r--AndroidManifest.xml65
-rw-r--r--proguard.flags2
-rw-r--r--res/xml/settings_headers.xml7
-rw-r--r--src/com/android/settings/cyanogenmod/superuser/MultitaskSuRequestActivity.java4
-rw-r--r--src/com/android/settings/cyanogenmod/superuser/NotifyActivity.java4
-rw-r--r--src/com/android/settings/cyanogenmod/superuser/PolicyNativeFragment.java4
-rw-r--r--src/com/android/settings/cyanogenmod/superuser/RequestActivity.java4
-rw-r--r--src/com/android/settings/cyanogenmod/superuser/SuReceiver.java4
9 files changed, 100 insertions, 0 deletions
diff --git a/Android.mk b/Android.mk
index fe8ed2d..eddeece 100644
--- a/Android.mk
+++ b/Android.mk
@@ -13,6 +13,12 @@ LOCAL_CERTIFICATE := platform
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
+LOCAL_AAPT_INCLUDE_ALL_RESOURCES := true
+LOCAL_AAPT_FLAGS := --extra-packages com.koushikdutta.superuser:com.koushikdutta.widgets --auto-add-overlay
+
+LOCAL_SRC_FILES += $(call all-java-files-under,../../../external/koush/Superuser/Superuser/src) $(call all-java-files-under,../../../external/koush/Widgets/Widgets/src)
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res $(LOCAL_PATH)/../../../external/koush/Widgets/Widgets/res $(LOCAL_PATH)/../../../external/koush/Superuser/Superuser/res
+
include $(BUILD_PACKAGE)
# Use the folloing include to make our test apk.
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 72be71b..976bc6b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -64,6 +64,29 @@
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.SET_TIME" />
+ <permission
+ android:name="android.permission.REQUEST_SUPERUSER"
+ android:protectionLevel="signature" />
+ <permission
+ android:name="android.permission.REPORT_SUPERUSER"
+ android:protectionLevel="signature" />
+
+ <permission-group
+ android:name="android.permission-group.SUPERUSER"
+ android:description="@string/superuser_description_more"
+ android:icon="@drawable/ic_action_permission"
+ android:label="@string/superuser"
+ android:priority="10000" />
+
+ <permission
+ android:name="android.permission.ACCESS_SUPERUSER"
+ android:description="@string/superuser_description_more"
+ android:icon="@drawable/ic_action_permission"
+ android:label="@string/superuser_description"
+ android:logo="@drawable/ic_action_permission"
+ android:permissionGroup="android.permission-group.SUPERUSER"
+ android:protectionLevel="dangerous" />
+
<application android:label="@string/settings_label"
android:icon="@mipmap/ic_launcher_settings"
android:taskAffinity=""
@@ -72,6 +95,48 @@
android:hardwareAccelerated="true"
android:supportsRtl="true">
+ <!-- Only system/su can open this activity -->
+ <!-- This activity will then call the MultitaskSuRequestActivity to create a new task stack -->
+ <activity
+ android:name=".cyanogenmod.superuser.RequestActivity"
+ android:configChanges="keyboardHidden|orientation|screenSize"
+ android:label="@string/superuser"
+ android:launchMode="singleTask"
+ android:excludeFromRecents="true"
+ android:permission="android.permission.REQUEST_SUPERUSER"
+ android:process=":superuser"
+ android:taskAffinity="com.android.settings.superuser"
+ android:theme="@style/RequestThemeDark" />
+ <!-- Only system/su can open this activity -->
+ <!-- This is activity is started in multiuser mode when the user invoking su -->
+ <!-- is not the device owner (user id 0). -->
+ <activity
+ android:name=".cyanogenmod.superuser.NotifyActivity"
+ android:configChanges="keyboardHidden|orientation|screenSize"
+ android:label="@string/superuser"
+ android:launchMode="singleTask"
+ android:excludeFromRecents="true"
+ android:permission="android.permission.REQUEST_SUPERUSER"
+ android:process=":superuser"
+ android:taskAffinity="com.android.settings.superuser"
+ android:theme="@style/RequestThemeDark" />
+
+ <!-- Multiple instances of this activity can be running for multiple su requests -->
+ <activity
+ android:name=".cyanogenmod.superuser.MultitaskSuRequestActivity"
+ android:configChanges="keyboardHidden|orientation|screenSize"
+ android:excludeFromRecents="true"
+ android:exported="false"
+ android:label="@string/request"
+ android:process=":superuser"
+ android:taskAffinity="com.android.settings.superuser"
+ android:theme="@style/RequestThemeDark" />
+
+ <receiver
+ android:name=".cyanogenmod.superuser.SuReceiver"
+ android:permission="android.permission.REPORT_SUPERUSER" />
+
+
<!-- Settings -->
<activity android:name="Settings"
diff --git a/proguard.flags b/proguard.flags
index 0805d68..2022452 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -12,6 +12,8 @@
-keep class com.android.settings.accounts.*
-keep class com.android.settings.fuelgauge.*
-keep class com.android.settings.users.*
+-keep class com.koushikdutta.**
+-keep class com.android.settings.cyanogenmod.superuser.**
# Keep click responders
-keepclassmembers class com.android.settings.inputmethod.UserDictionaryAddWordActivity {
diff --git a/res/xml/settings_headers.xml b/res/xml/settings_headers.xml
index 156d63f..3b3e0c1 100644
--- a/res/xml/settings_headers.xml
+++ b/res/xml/settings_headers.xml
@@ -213,6 +213,13 @@
<header android:id="@+id/system_section"
android:title="@string/header_category_system" />
+ <!-- Superuser -->
+ <header
+ android:id="@+id/superuser"
+ android:fragment="com.android.settings.cyanogenmod.superuser.PolicyNativeFragment"
+ android:icon="@drawable/ic_action_permission"
+ android:title="@string/superuser" />
+
<!-- Date & Time -->
<header
android:id="@+id/date_time_settings"
diff --git a/src/com/android/settings/cyanogenmod/superuser/MultitaskSuRequestActivity.java b/src/com/android/settings/cyanogenmod/superuser/MultitaskSuRequestActivity.java
new file mode 100644
index 0000000..0103076
--- /dev/null
+++ b/src/com/android/settings/cyanogenmod/superuser/MultitaskSuRequestActivity.java
@@ -0,0 +1,4 @@
+package com.android.settings.cyanogenmod.superuser;
+
+public class MultitaskSuRequestActivity extends com.koushikdutta.superuser.MultitaskSuRequestActivity {
+} \ No newline at end of file
diff --git a/src/com/android/settings/cyanogenmod/superuser/NotifyActivity.java b/src/com/android/settings/cyanogenmod/superuser/NotifyActivity.java
new file mode 100644
index 0000000..23aa6a7
--- /dev/null
+++ b/src/com/android/settings/cyanogenmod/superuser/NotifyActivity.java
@@ -0,0 +1,4 @@
+package com.android.settings.cyanogenmod.superuser;
+
+public class NotifyActivity extends com.koushikdutta.superuser.NotifyActivity {
+} \ No newline at end of file
diff --git a/src/com/android/settings/cyanogenmod/superuser/PolicyNativeFragment.java b/src/com/android/settings/cyanogenmod/superuser/PolicyNativeFragment.java
new file mode 100644
index 0000000..1c74543
--- /dev/null
+++ b/src/com/android/settings/cyanogenmod/superuser/PolicyNativeFragment.java
@@ -0,0 +1,4 @@
+package com.android.settings.cyanogenmod.superuser;
+
+public class PolicyNativeFragment extends com.koushikdutta.superuser.PolicyNativeFragment {
+} \ No newline at end of file
diff --git a/src/com/android/settings/cyanogenmod/superuser/RequestActivity.java b/src/com/android/settings/cyanogenmod/superuser/RequestActivity.java
new file mode 100644
index 0000000..e6deca4
--- /dev/null
+++ b/src/com/android/settings/cyanogenmod/superuser/RequestActivity.java
@@ -0,0 +1,4 @@
+package com.android.settings.cyanogenmod.superuser;
+
+public class RequestActivity extends com.koushikdutta.superuser.RequestActivity {
+} \ No newline at end of file
diff --git a/src/com/android/settings/cyanogenmod/superuser/SuReceiver.java b/src/com/android/settings/cyanogenmod/superuser/SuReceiver.java
new file mode 100644
index 0000000..c4f9174
--- /dev/null
+++ b/src/com/android/settings/cyanogenmod/superuser/SuReceiver.java
@@ -0,0 +1,4 @@
+package com.android.settings.cyanogenmod.superuser;
+
+public class SuReceiver extends com.koushikdutta.superuser.SuReceiver {
+} \ No newline at end of file