Switch to open source superuser
Change-Id: I0882b4bb296af041ec5766ff29a605554f13b0a7
diff --git a/Android.mk b/Android.mk
index fe8ed2d..eddeece 100644
--- a/Android.mk
+++ b/Android.mk
@@ -13,6 +13,12 @@
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 cc26d74..5d5c47c 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="com.koushikdutta.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="com.koushikdutta.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="com.koushikdutta.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="com.koushikdutta.superuser.SuReceiver"
+ android:permission="android.permission.REPORT_SUPERUSER" />
+
+
<!-- Settings -->
<activity android:name="Settings"
diff --git a/proguard.flags b/proguard.flags
index 0805d68..bc0a933 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -12,6 +12,7 @@
-keep class com.android.settings.accounts.*
-keep class com.android.settings.fuelgauge.*
-keep class com.android.settings.users.*
+-keep class com.koushikdutta.**
# 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 d9a226d..009c111 100644
--- a/res/xml/settings_headers.xml
+++ b/res/xml/settings_headers.xml
@@ -188,6 +188,13 @@
<header android:id="@+id/system_section"
android:title="@string/header_category_system" />
+ <!-- Superuser -->
+ <header
+ android:id="@+id/superuser"
+ android:fragment="com.koushikdutta.superuser.PolicyNativeFragment"
+ android:icon="@drawable/ic_action_permission"
+ android:title="@string/superuser" />
+
<!-- Date & Time -->
<header
android:id="@+id/date_time_settings"