LOCAL_MODULE_TAGS := optional
LOCAL_USE_AAPT2 := true
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+ $(call all-java-files-under,../../../external/koush/Widgets/Widgets/src) \
+ $(call all-java-files-under,../../../external/koush/Superuser/Superuser/src)
LOCAL_STATIC_ANDROID_LIBRARIES := \
android-support-v4 \
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res \
+ external/koush/Widgets/Widgets/res \
+ external/koush/Superuser/Superuser/res
+
+LOCAL_AAPT_INCLUDE_ALL_RESOURCES := true
+
+LOCAL_AAPT_FLAGS := --auto-add-overlay \
+ --extra-packages com.koushikdutta.superuser:com.koushikdutta.widgets
+
ifneq ($(INCREMENTAL_BUILDS),)
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_JACK_ENABLED := incremental
<uses-permission android:name="android.permission.READ_PRINT_SERVICES" />
<uses-permission android:name="android.permission.NETWORK_SETTINGS" />
+ <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="@drawable/ic_launcher_settings"
android:taskAffinity=""
android:defaultToDeviceProtectedStorage="true"
android:directBootAware="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"
android:value="com.android.settings.print.PrintJobSettingsFragment" />
</activity>
+ <activity android:name="Settings$SuperuserActivity"
+ android:label="@string/superuser"
+ android:icon="@drawable/ic_action_permission"
+ android:taskAffinity="com.android.settings"
+ android:parentActivityName="Settings$UserAndAccountDashboardActivity">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <intent-filter android:priority="3">
+ <action android:name="com.android.settings.action.SETTINGS" />
+ </intent-filter>
+ <meta-data android:name="com.android.settings.summary"
+ android:resource="@string/superuser_description"/>
+ <meta-data android:name="com.android.settings.category"
+ android:value="com.android.settings.category.ia.accounts" />
+ <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+ android:value="com.android.settings.cyanogenmod.superuser.PolicyNativeFragment" />
+ <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+ android:value="true" />
+ </activity>
+
<activity android:name=".development.AppPicker"
android:label="@string/select_application"
android:theme="@android:style/Theme.DeviceDefault.Light.Dialog" />
android:resource="@string/app_and_notification_dashboard_summary"/>
</activity>
+ <activity android:name=".Settings$AndroidX86DashboardActivity"
+ android:label="@string/android_x86_options_title"
+ android:icon="@drawable/ic_settings_applications">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <intent-filter android:priority="6">
+ <action android:name="com.android.settings.action.SETTINGS" />
+ </intent-filter>
+ <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+ android:value="com.android.settings.AndroidX86DashboardFragment" />
+ <meta-data android:name="com.android.settings.category"
+ android:value="com.android.settings.category.ia.homepage" />
+ <meta-data android:name="com.android.settings.summary"
+ android:resource="@string/android_x86_dashboard_summary"/>
+ <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+ android:value="true" />
+ </activity>
+
+ <receiver android:name=".DownloadCompleteReceiver">
+ <intent-filter>
+ <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
+ </intent-filter>
+ </receiver>
+
<activity android:name=".Settings$UserAndAccountDashboardActivity"
android:label="@string/account_dashboard_title"
android:icon="@drawable/ic_settings_accounts">
# Keep all Fragments in this package, which are used by reflection.
-keep public class com.android.settings.** extends android.app.Fragment
+-keep public class com.android.settings.cyanogenmod.superuser.**
+-keep public class com.koushikdutta.**
# We want to keep methods in Activity that could be used in the XML attribute onClick.
-keepclassmembers class * extends android.app.Activity {
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android-weergawe"</string>
<string name="security_patch" msgid="8438384045870296634">"Android-sekuriteitregstelling-vlak"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Vervaardiger"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model en hardeware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Hardewareweergawe"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android ሥሪት"</string>
<string name="security_patch" msgid="8438384045870296634">"የAndroid ደህነንት መጠገኛ ደረጃ"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"አምራች"</string>
<string name="model_info" msgid="1952009518045740889">"ሞዴል"</string>
<string name="hardware_info" msgid="2605080746512527805">"ሞዴል እና ሃርድዌር"</string>
<string name="hardware_revision" msgid="8893547686367095527">"የሃርድዌር ስሪት"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"إصدار Android"</string>
<string name="security_patch" msgid="8438384045870296634">"مستوى رمز تصحيح أمان Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"جهة التصنيع"</string>
<string name="model_info" msgid="1952009518045740889">"الطراز"</string>
<string name="hardware_info" msgid="2605080746512527805">"الطراز والأجهزة"</string>
<string name="hardware_revision" msgid="8893547686367095527">"إصدار الأجهزة"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android versiyası"</string>
<string name="security_patch" msgid="8438384045870296634">"Android təhlükəsizlik yamaq səviyyəsi"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"İstehsalçı"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model və avadanlıq"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Avadanlıq versiyası"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android verzija"</string>
<string name="security_patch" msgid="8438384045870296634">"Nivo bezbednosne zakrpe za Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Proizvođač"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model i hardver"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Verzija hardvera"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Версія Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Узровень патчу бяспекі Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Вытворца"</string>
<string name="model_info" msgid="1952009518045740889">"Мадэль"</string>
<string name="hardware_info" msgid="2605080746512527805">"Мадэль і апаратнае забеспячэнне"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Версія апаратнага забеспячэння"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Версия на Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Ниво на корекцията на сигурността под Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Производител"</string>
<string name="model_info" msgid="1952009518045740889">"Модел"</string>
<string name="hardware_info" msgid="2605080746512527805">"Модел и хардуер"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Версия на хардуера"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android ভার্সন"</string>
<string name="security_patch" msgid="8438384045870296634">"Android সুরক্ষার প্যাচ লেবেল"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"প্রস্তুতকারক"</string>
<string name="model_info" msgid="1952009518045740889">"মডেল"</string>
<string name="hardware_info" msgid="2605080746512527805">"মডেল ও হার্ডওয়্যার"</string>
<string name="hardware_revision" msgid="8893547686367095527">"হার্ডওয়্যার ভার্সন"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Verzija Androida"</string>
<string name="security_patch" msgid="8438384045870296634">"Nivo sigurnosne zakrpe Androida"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Proizvođač"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model i hardver"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Verzija hardvera"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Versió d\'Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Nivell de pedaç de seguretat d\'Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Fabricant"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model i maquinari"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Versió del maquinari"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Verze systému Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Úroveň opravy zabezpečení Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Výrobce"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model a hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Verze hardwaru"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android-version"</string>
<string name="security_patch" msgid="8438384045870296634">"Niveau for sikkerhedsrettelse på Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Producent"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model og hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Hardwareversion"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android-Version"</string>
<string name="security_patch" msgid="8438384045870296634">"Stand der Sicherheitsupdates"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Hersteller"</string>
<string name="model_info" msgid="1952009518045740889">"Modell"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modell und Hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Hardwareversion"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Έκδοση Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Επίπεδο ενημέρωσης κώδικα ασφαλείας Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Κατασκευαστής"</string>
<string name="model_info" msgid="1952009518045740889">"Μοντέλο"</string>
<string name="hardware_info" msgid="2605080746512527805">"Μοντέλο και εξοπλισμός"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Έκδοση εξοπλισμού"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android version"</string>
<string name="security_patch" msgid="8438384045870296634">"Android security patch level"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Manufacturer"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model & hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Hardware version"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android version"</string>
<string name="security_patch" msgid="8438384045870296634">"Android security patch level"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Manufacturer"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model & hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Hardware version"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android version"</string>
<string name="security_patch" msgid="8438384045870296634">"Android security patch level"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Manufacturer"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model & hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Hardware version"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Versión de Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Nivel de parche de seguridad de Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Fabricante"</string>
<string name="model_info" msgid="1952009518045740889">"Modelo"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modelo y hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Versión de hardware"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Versión de Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Nivel de parche de seguridad de Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Fabricante"</string>
<string name="model_info" msgid="1952009518045740889">"Modelo"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modelo y hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Versión de hardware"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Androidi versioon"</string>
<string name="security_patch" msgid="8438384045870296634">"Androidi turvapaiga tase"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Tootja"</string>
<string name="model_info" msgid="1952009518045740889">"Mudel"</string>
<string name="hardware_info" msgid="2605080746512527805">"Mudel ja riistvara"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Riistvara versioon"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android bertsioa"</string>
<string name="security_patch" msgid="8438384045870296634">"Android segurtasunaren adabaki-maila"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Fabrikatzailea"</string>
<string name="model_info" msgid="1952009518045740889">"Modeloa"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modeloa eta hardwarea"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Hardware bertsioa"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"نسخهٔ Android"</string>
<string name="security_patch" msgid="8438384045870296634">"سطح وصله امنیتی Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"سازنده"</string>
<string name="model_info" msgid="1952009518045740889">"مدل"</string>
<string name="hardware_info" msgid="2605080746512527805">"مدل و سختافزار"</string>
<string name="hardware_revision" msgid="8893547686367095527">"نسخه سختافزار"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android-versio"</string>
<string name="security_patch" msgid="8438384045870296634">"Android-tietoturvakorjauksen taso"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Valmistaja"</string>
<string name="model_info" msgid="1952009518045740889">"Malli"</string>
<string name="hardware_info" msgid="2605080746512527805">"Malli ja laitteisto"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Laitteistoversio"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Version d\'Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Niveau du correctif de sécurité Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Fabricant"</string>
<string name="model_info" msgid="1952009518045740889">"Modèle"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modèle et matériel"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Version du matériel"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Version d\'Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Mise à jour du correctif de sécurité Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Fabricant"</string>
<string name="model_info" msgid="1952009518045740889">"Modèle"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modèle et matériel"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Version du matériel"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Versión de Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Nivel de parche de seguranza de Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Fabricante"</string>
<string name="model_info" msgid="1952009518045740889">"Modelo"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modelo e hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Versión de hardware"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android સંસ્કરણ"</string>
<string name="security_patch" msgid="8438384045870296634">"Android સુરક્ષા પૅચ સ્તર"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"નિર્માતા"</string>
<string name="model_info" msgid="1952009518045740889">"મોડલ"</string>
<string name="hardware_info" msgid="2605080746512527805">"મૉડલ અને હાર્ડવેર"</string>
<string name="hardware_revision" msgid="8893547686367095527">"હાર્ડવેર સંસ્કરણ"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android वर्शन"</string>
<string name="security_patch" msgid="8438384045870296634">"Android सुरक्षा पैच का स्तर"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"निर्माता"</string>
<string name="model_info" msgid="1952009518045740889">"मॉडल"</string>
<string name="hardware_info" msgid="2605080746512527805">"मॉडल और हार्डवेयर"</string>
<string name="hardware_revision" msgid="8893547686367095527">"हार्डवेयर वर्शन"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Verzija sustava Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Razina Androidove sigurnosne zakrpe"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Proizvođač"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model i hardver"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Verzija hardvera"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android verziója"</string>
<string name="security_patch" msgid="8438384045870296634">"Androidos biztonsági hibajavító csomag szintje"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Gyártó"</string>
<string name="model_info" msgid="1952009518045740889">"Modell"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modell és hardver"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Hardververzió"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android-ի տարբերակը"</string>
<string name="security_patch" msgid="8438384045870296634">"Android-ի խոցելիության շտկման մակարդակը"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Արտադրող"</string>
<string name="model_info" msgid="1952009518045740889">"Մոդելը"</string>
<string name="hardware_info" msgid="2605080746512527805">"Մոդելը և սարքակազմը"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Սարքակազմի տարբերակը"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Versi Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Tingkat patch keamanan Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Produsen"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model & hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Versi hardware"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android útgáfa"</string>
<string name="security_patch" msgid="8438384045870296634">"Stig Android öryggisplásturs"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Framleiðandi"</string>
<string name="model_info" msgid="1952009518045740889">"Gerð"</string>
<string name="hardware_info" msgid="2605080746512527805">"Gerð og vélbúnaður"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Vélbúnaðarútgáfa"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Versione di Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Livello patch di sicurezza Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Produttore"</string>
<string name="model_info" msgid="1952009518045740889">"Modello"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modello e hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Versione hardware"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"גרסת Android"</string>
<string name="security_patch" msgid="8438384045870296634">"רמת תיקון האבטחה ב-Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"יצרן"</string>
<string name="model_info" msgid="1952009518045740889">"דגם"</string>
<string name="hardware_info" msgid="2605080746512527805">"דגם וחומרה"</string>
<string name="hardware_revision" msgid="8893547686367095527">"גרסת חומרה"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Androidバージョン"</string>
<string name="security_patch" msgid="8438384045870296634">"Androidセキュリティパッチレベル"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"メーカー"</string>
<string name="model_info" msgid="1952009518045740889">"モデル"</string>
<string name="hardware_info" msgid="2605080746512527805">"モデルとハードウェア"</string>
<string name="hardware_revision" msgid="8893547686367095527">"ハードウェア バージョン"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android-ის ვერსია"</string>
<string name="security_patch" msgid="8438384045870296634">"Android-ის უსაფრთხოების ნაწილაკის დონე"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"მწარმოებელი"</string>
<string name="model_info" msgid="1952009518045740889">"მოდელი"</string>
<string name="hardware_info" msgid="2605080746512527805">"მოდელი და აპარატურა"</string>
<string name="hardware_revision" msgid="8893547686367095527">"აპარატურის ვერსია"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android нұсқасы"</string>
<string name="security_patch" msgid="8438384045870296634">"Android қауіпсіздік түзетуінің деңгейі"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Өндіруші"</string>
<string name="model_info" msgid="1952009518045740889">"Үлгісі"</string>
<string name="hardware_info" msgid="2605080746512527805">"Үлгі және жабдық"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Жабдық нұсқасы"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"កំណែ Android"</string>
<string name="security_patch" msgid="8438384045870296634">"កម្រិតនៃការដោះស្រាយសុវត្ថិភាព Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"ក្រុមហ៊ុនផលិត"</string>
<string name="model_info" msgid="1952009518045740889">"គំរូ"</string>
<string name="hardware_info" msgid="2605080746512527805">"ម៉ូដែល និងផ្នែករឹង"</string>
<string name="hardware_revision" msgid="8893547686367095527">"កំណែផ្នែករឹង"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android ಆವೃತ್ತಿ"</string>
<string name="security_patch" msgid="8438384045870296634">"Android ಭದ್ರತೆ ಪ್ಯಾಚ್ ಮಟ್ಟ"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"ತಯಾರಕರು"</string>
<string name="model_info" msgid="1952009518045740889">"ಮಾಡೆಲ್"</string>
<string name="hardware_info" msgid="2605080746512527805">"ಮಾಡೆಲ್ ಮತ್ತು ಹಾರ್ಡ್ವೇರ್"</string>
<string name="hardware_revision" msgid="8893547686367095527">"ಹಾರ್ಡ್ವೇರ್ ಆವೃತ್ತಿ"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android 버전"</string>
<string name="security_patch" msgid="8438384045870296634">"Android 보안 패치 수준"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"제조업체"</string>
<string name="model_info" msgid="1952009518045740889">"모델"</string>
<string name="hardware_info" msgid="2605080746512527805">"모델 및 하드웨어"</string>
<string name="hardware_revision" msgid="8893547686367095527">"하드웨어 버전"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android версиясы"</string>
<string name="security_patch" msgid="8438384045870296634">"Коопсуздук тутуму качан жаңыртылды"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Өндүрүүчү"</string>
<string name="model_info" msgid="1952009518045740889">"Үлгүсү"</string>
<string name="hardware_info" msgid="2605080746512527805">"Түзмөктүн үлгүсү/аппараттык камсыздалышы"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Аппараттык камсыздоонун версиясы"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"ເວີຊັນຂອງ Android"</string>
<string name="security_patch" msgid="8438384045870296634">"ລະດັບບ່ອນຄວາມປອດໄພ Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"ຜູ້ຜະລິດ"</string>
<string name="model_info" msgid="1952009518045740889">"ໂມເດວ"</string>
<string name="hardware_info" msgid="2605080746512527805">"ໂມເດວ ແລະ ຮາດແວ"</string>
<string name="hardware_revision" msgid="8893547686367095527">"ເວີຊັນຂອງຮາດແວ"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"„Android“ versija"</string>
<string name="security_patch" msgid="8438384045870296634">"„Android“ saugos pataisos lygis"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Gamintojas"</string>
<string name="model_info" msgid="1952009518045740889">"Modelis"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modelis ir aparatinė įranga"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Aparatinės įrangos versija"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android versija"</string>
<string name="security_patch" msgid="8438384045870296634">"Android drošības ielāpa līmenis"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Ražotājs"</string>
<string name="model_info" msgid="1952009518045740889">"Modelis"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modelis un aparatūra"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Aparatūras versija"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Верзија на Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Ниво на безбедносна лепенка на Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Производителот"</string>
<string name="model_info" msgid="1952009518045740889">"Модел"</string>
<string name="hardware_info" msgid="2605080746512527805">"Модел и хардвер"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Верзија на хардвер"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android പതിപ്പ്"</string>
<string name="security_patch" msgid="8438384045870296634">"Android സുരക്ഷാ പാച്ച് നില"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"നിർമ്മാതാവ്"</string>
<string name="model_info" msgid="1952009518045740889">"മോഡല്"</string>
<string name="hardware_info" msgid="2605080746512527805">"മോഡലും ഹാർഡ്വെയറും"</string>
<string name="hardware_revision" msgid="8893547686367095527">"ഹാർഡ്വെയർ പതിപ്പ്"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Андройд хувилбар"</string>
<string name="security_patch" msgid="8438384045870296634">"Android аюулгүй байдлын засварын түвшин"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Үйлдвэрлэгч"</string>
<string name="model_info" msgid="1952009518045740889">"Загвар"</string>
<string name="hardware_info" msgid="2605080746512527805">"Загвар, техник хангамж"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Техник хангамжийн хувилбар"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android आवृत्ती"</string>
<string name="security_patch" msgid="8438384045870296634">"Android सुरक्षितता पॅच दर्जा"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"निर्माता"</string>
<string name="model_info" msgid="1952009518045740889">"मॉडेल"</string>
<string name="hardware_info" msgid="2605080746512527805">"मॉडेल & हार्डवेअर"</string>
<string name="hardware_revision" msgid="8893547686367095527">"हार्डवेअर आवृत्ती"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Versi Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Tahap tampung keselamatan Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Pengeluar"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model & perkakasan"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Versi perkakasan"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android ဗားရှင်း"</string>
<string name="security_patch" msgid="8438384045870296634">"Android လုံခြုံမှု ပက်ခ်ျ အဆင့်"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"ထုတ်လုပ်သူ"</string>
<string name="model_info" msgid="1952009518045740889">"မော်ဒယ်"</string>
<string name="hardware_info" msgid="2605080746512527805">"မော်ဒယ်နှင့် စက်ပစ္စည်း"</string>
<string name="hardware_revision" msgid="8893547686367095527">"စက်ပစ္စည်းဗားရှင်း"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android-versjon"</string>
<string name="security_patch" msgid="8438384045870296634">"Nivå av sikkerhetsoppdatering i Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Produsent"</string>
<string name="model_info" msgid="1952009518045740889">"Modell"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modell og maskinvare"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Maskinvareversjon"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"एन्ड्रोइड संस्करण"</string>
<string name="security_patch" msgid="8438384045870296634">"Android सुरक्षा प्याच चरण"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"निर्माता"</string>
<string name="model_info" msgid="1952009518045740889">"मोडेल"</string>
<string name="hardware_info" msgid="2605080746512527805">"मोडेल तथा हार्डवेयर"</string>
<string name="hardware_revision" msgid="8893547686367095527">"हार्डवेयरको संस्करण"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android-versie"</string>
<string name="security_patch" msgid="8438384045870296634">"Niveau van Android-beveiligingspatch"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Fabrikant"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model en hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Hardwareversie"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android ਵਰਜਨ"</string>
<string name="security_patch" msgid="8438384045870296634">"Android ਸੁਰੱਖਿਆ ਪੈਚ ਪੱਧਰ"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"ਨਿਰਮਾਤਾ"</string>
<string name="model_info" msgid="1952009518045740889">"ਮਾਡਲ"</string>
<string name="hardware_info" msgid="2605080746512527805">"ਮਾਡਲ ਅਤੇ ਹਾਰਡਵੇਅਰ"</string>
<string name="hardware_revision" msgid="8893547686367095527">"ਹਾਰਡਵੇਅਰ ਵਰਜਨ"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Wersja Androida"</string>
<string name="security_patch" msgid="8438384045870296634">"Stan aktualizacji zabezpieczeń"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Producent"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model i sprzęt"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Wersja sprzętu"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Versão do Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Nível do patch de segurança do Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Fabricante"</string>
<string name="model_info" msgid="1952009518045740889">"Modelo"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modelo e hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Versão do hardware"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Versão do Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Nível do patch de segurança do Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Fabricante"</string>
<string name="model_info" msgid="1952009518045740889">"Modelo"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modelo e hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Versão do hardware"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Versão do Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Nível do patch de segurança do Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Fabricante"</string>
<string name="model_info" msgid="1952009518045740889">"Modelo"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modelo e hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Versão do hardware"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Versiune Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Nivelul corecției de securitate Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Producător"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model și hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Versiune de hardware"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Версия Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Последнее обновление системы безопасности"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Производитель"</string>
<string name="model_info" msgid="1952009518045740889">"Модель"</string>
<string name="hardware_info" msgid="2605080746512527805">"Модель и оборудование"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Версия аппаратного обеспечения"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android අනුවාදය"</string>
<string name="security_patch" msgid="8438384045870296634">"Android ආරක්ෂණ පැච් මට්ටම"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"නිෂ්පාදකයා"</string>
<string name="model_info" msgid="1952009518045740889">"මාදිලිය"</string>
<string name="hardware_info" msgid="2605080746512527805">"මාදිලිය සහ දෘඨාංග"</string>
<string name="hardware_revision" msgid="8893547686367095527">"දෘඨාංග අනුවාදය"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Verzia systému Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Úroveň opráv zabezpečenia systému"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Výrobca"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model a hardvér"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Hardvérová verzia"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Različica sistema Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Raven popravkov za varnost v Androidu"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Proizvajalec"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model in strojna oprema"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Različica strojne opreme"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Versioni i Android-it"</string>
<string name="security_patch" msgid="8438384045870296634">"Niveli i korrigjimit të sigurisë së Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Prodhuesi"</string>
<string name="model_info" msgid="1952009518045740889">"Modeli"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modeli dhe hardueri"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Versioni i harduerit"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android верзија"</string>
<string name="security_patch" msgid="8438384045870296634">"Ниво безбедносне закрпе за Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Произвођач"</string>
<string name="model_info" msgid="1952009518045740889">"Модел"</string>
<string name="hardware_info" msgid="2605080746512527805">"Модел и хардвер"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Верзија хардвера"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android-version"</string>
<string name="security_patch" msgid="8438384045870296634">"Nivå av säkerhetskorrigering för Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Tillverkare"</string>
<string name="model_info" msgid="1952009518045740889">"Modell"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modell och maskinvara"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Maskinvaruversion"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Toleo la Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Kiwango cha kuzuia athari za usalama kwenye Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Mtengenezaji"</string>
<string name="model_info" msgid="1952009518045740889">"Muundo"</string>
<string name="hardware_info" msgid="2605080746512527805">"Muundo na maunzi"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Toleo la maunzi"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android பதிப்பு"</string>
<string name="security_patch" msgid="8438384045870296634">"Android பாதுகாப்பின் இணைப்புநிரல் நிலை"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"உற்பத்தியாளர்"</string>
<string name="model_info" msgid="1952009518045740889">"மாடல்"</string>
<string name="hardware_info" msgid="2605080746512527805">"மாடல் & வன்பொருள்"</string>
<string name="hardware_revision" msgid="8893547686367095527">"வன்பொருள் பதிப்பு"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android వెర్షన్"</string>
<string name="security_patch" msgid="8438384045870296634">"Android భద్రతా అతికింపు స్థాయి"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"తయారీదారు"</string>
<string name="model_info" msgid="1952009518045740889">"మోడల్"</string>
<string name="hardware_info" msgid="2605080746512527805">"మోడల్ & హార్డ్వేర్"</string>
<string name="hardware_revision" msgid="8893547686367095527">"హార్డ్వేర్ వెర్షన్"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"เวอร์ชันของ Android"</string>
<string name="security_patch" msgid="8438384045870296634">"ระดับแพตช์ความปลอดภัยของ Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"ผู้ผลิต"</string>
<string name="model_info" msgid="1952009518045740889">"โมเดล"</string>
<string name="hardware_info" msgid="2605080746512527805">"โมเดลและฮาร์ดแวร์"</string>
<string name="hardware_revision" msgid="8893547686367095527">"เวอร์ชันฮาร์ดแวร์"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Bersyon ng Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Antas ng patch ng seguridad ng Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Manufacturer"</string>
<string name="model_info" msgid="1952009518045740889">"Modelo"</string>
<string name="hardware_info" msgid="2605080746512527805">"Modelo at hardware"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Bersyon ng hardware"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android sürümü"</string>
<string name="security_patch" msgid="8438384045870296634">"Android güvenlik yaması düzeyi"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Üretici"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model ve donanım"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Donanım sürümü"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Версія Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Останнє виправлення системи безпеки Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Виробник"</string>
<string name="model_info" msgid="1952009518045740889">"Модель"</string>
<string name="hardware_info" msgid="2605080746512527805">"Модель і апаратне забезпечення"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Версія апаратного забезпечення"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android ورژن"</string>
<string name="security_patch" msgid="8438384045870296634">"Android سیکیورٹی پیچ کی سطح"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"مینوفیکچرر"</string>
<string name="model_info" msgid="1952009518045740889">"ماڈل"</string>
<string name="hardware_info" msgid="2605080746512527805">"ماڈل اور ہارڈ ویئر"</string>
<string name="hardware_revision" msgid="8893547686367095527">"ہارڈ ویئر کا ورژن"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android versiyasi"</string>
<string name="security_patch" msgid="8438384045870296634">"Tizim xavfsizligi uchun yangilanish"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Ishlab chiqaruvchi"</string>
<string name="model_info" msgid="1952009518045740889">"Model"</string>
<string name="hardware_info" msgid="2605080746512527805">"Model va apparat ta’minoti"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Apparat versiyasi"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Phiên bản Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Mức bản vá bảo mật của Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Nhà sản xuất"</string>
<string name="model_info" msgid="1952009518045740889">"Kiểu máy"</string>
<string name="hardware_info" msgid="2605080746512527805">"Kiểu máy và phần cứng"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Phiên bản phần cứng"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android 版本"</string>
<string name="security_patch" msgid="8438384045870296634">"Android 安全补丁程序级别"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"制造商"</string>
<string name="model_info" msgid="1952009518045740889">"型号"</string>
<string name="hardware_info" msgid="2605080746512527805">"型号和硬件"</string>
<string name="hardware_revision" msgid="8893547686367095527">"硬件版本"</string>
<string name="fcc_equipment_id" msgid="149114368246356737">"设备 ID"</string>
<string name="baseband_version" msgid="1848990160763524801">"基带版本"</string>
<string name="kernel_version" msgid="9192574954196167602">"内核版本"</string>
+ <string name="opengl_version">"Open GL 驱动版本"</string>
<string name="build_number" msgid="3075795840572241758">"版本号"</string>
<string name="selinux_status" msgid="6212165375172061672">"SELinux 状态"</string>
<string name="device_info_not_available" msgid="8062521887156825182">"无法获取"</string>
<string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"要停止系统服务吗?"</string>
<string name="runningservicedetails_stop_dlg_text" product="tablet" msgid="3371302398335665793">"如果停止此服务,您平板电脑上的某些功能也将随之停止工作,并在您将平板电脑关机然后再重新打开后才能使用。"</string>
<string name="runningservicedetails_stop_dlg_text" product="default" msgid="3920243762189484756">"如果停止此服务,您手机上的某些功能也将随之停止工作,并在您将手机关机然后再重新打开后才能使用。"</string>
+ <string name="android_x86_options_title">"安卓X86设置"</string>
+ <string name="android_x86_dashboard_summary">兼容模式、统计</string>
+ <string name="nativebridge_toggle_title">"兼容模式"</string>
+ <string name="nativebridge_toggle_summary">"可兼容於使用 arm 庫的应用"</string>
+ <string name="collect_hw_info_title">收集匿名的硬件信息</string>
+ <string name="collect_hw_info_summary">收集本机的硬件信息并传送给 Android-x86 项目做统计</string>
+ <string name="collect_apps_usage_title">收集匿名的应用信息</string>
+ <string name="collect_apps_usage_summary">收集应用的开启信息并传送给 Android-x86 项目做统计</string>
<string name="language_input_gesture_title" msgid="8749227808244881255">"语言、输入法和手势"</string>
<string name="language_input_gesture_summary_on_with_assist" msgid="7219895055450633449"></string>
<string name="language_input_gesture_summary_on_non_assist" msgid="756147879200943161"></string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android 版本"</string>
<string name="security_patch" msgid="8438384045870296634">"Android 安全性修補程式級別"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"製造商"</string>
<string name="model_info" msgid="1952009518045740889">"型號"</string>
<string name="hardware_info" msgid="2605080746512527805">"型號和硬件"</string>
<string name="hardware_revision" msgid="8893547686367095527">"硬件版本"</string>
<string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"停止系統服務?"</string>
<string name="runningservicedetails_stop_dlg_text" product="tablet" msgid="3371302398335665793">"如果您停用這項服務,您平板電腦上的某些功能可能會停止正常運作,待您重新開機後才會恢復正常。"</string>
<string name="runningservicedetails_stop_dlg_text" product="default" msgid="3920243762189484756">"如果您停用這項服務,您手機上的某些功能可能會停止正常運作,待您重新開機後才會恢復正常。"</string>
+ <string name="android_x86_options_title">"Android-x86 設定"</string>
+ <string name="android_x86_dashboard_summary">原生相容模式、統計</string>
+ <string name="nativebridge_toggle_title">"原生相容模式"</string>
+ <string name="nativebridge_toggle_summary">"可相容於使用 arm 原生函式庫的應用程式"</string>
+ <string name="collect_hw_info_title">收集匿名的硬體資訊</string>
+ <string name="collect_hw_info_summary">收集本機的硬體資訊並傳送給 Android-x86 計劃以便統計</string>
+ <string name="collect_apps_usage_title">收集匿名的應用程式資訊</string>
+ <string name="collect_apps_usage_summary">收集應用程式的開啟資料並傳送給 Android-x86 計劃以便統計</string>
<string name="language_input_gesture_title" msgid="8749227808244881255">"語言、輸入和手勢"</string>
<string name="language_input_gesture_summary_on_with_assist" msgid="7219895055450633449"></string>
<string name="language_input_gesture_summary_on_non_assist" msgid="756147879200943161"></string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android 版本"</string>
<string name="security_patch" msgid="8438384045870296634">"Android 安全性修補程式等級"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"製造商"</string>
<string name="model_info" msgid="1952009518045740889">"型號"</string>
<string name="hardware_info" msgid="2605080746512527805">"型號與硬體"</string>
<string name="hardware_revision" msgid="8893547686367095527">"硬體版本"</string>
<string name="fcc_equipment_id" msgid="149114368246356737">"設備 ID"</string>
<string name="baseband_version" msgid="1848990160763524801">"基頻版本"</string>
<string name="kernel_version" msgid="9192574954196167602">"核心版本"</string>
+ <string name="opengl_version">"Open GL 驅動版本"</string>
<string name="build_number" msgid="3075795840572241758">"版本號碼"</string>
<string name="selinux_status" msgid="6212165375172061672">"SELinux 狀態"</string>
<string name="device_info_not_available" msgid="8062521887156825182">"無法取得"</string>
<string name="runningservicedetails_stop_dlg_title" msgid="4253292537154337233">"停止系統服務?"</string>
<string name="runningservicedetails_stop_dlg_text" product="tablet" msgid="3371302398335665793">"如果你停用這項服務,你的平板電腦上的某些功能可能無法正常運作,待你重新開機後才會恢復正常。"</string>
<string name="runningservicedetails_stop_dlg_text" product="default" msgid="3920243762189484756">"如果你停用這項服務,你的手機上的某些功能可能無法正常運作,待你重新開機後才會恢復正常。"</string>
+ <string name="android_x86_options_title">"Android-x86 設定"</string>
+ <string name="android_x86_dashboard_summary">原生相容模式、統計</string>
+ <string name="nativebridge_toggle_title">"原生相容模式"</string>
+ <string name="nativebridge_toggle_summary">"可相容於使用 arm 原生函式庫的應用程式"</string>
+ <string name="collect_hw_info_title">收集匿名的硬體資訊</string>
+ <string name="collect_hw_info_summary">收集本機的硬體資訊並傳送給 Android-x86 計劃以便統計</string>
+ <string name="collect_apps_usage_title">收集匿名的應用程式資訊</string>
+ <string name="collect_apps_usage_summary">收集應用程式的開啟資料並傳送給 Android-x86 計劃以便統計</string>
<string name="language_input_gesture_title" msgid="8749227808244881255">"語言、輸入和手勢"</string>
<string name="language_input_gesture_summary_on_with_assist" msgid="7219895055450633449"></string>
<string name="language_input_gesture_summary_on_non_assist" msgid="756147879200943161"></string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Inguqulo ye-Android"</string>
<string name="security_patch" msgid="8438384045870296634">"Ileveli yokuvikeleka ye-Android"</string>
+ <string name="device_manufacturer" msgid="3516742885166545865">"Umkhiqizi"</string>
<string name="model_info" msgid="1952009518045740889">"Imodeli"</string>
<string name="hardware_info" msgid="2605080746512527805">"Imodeli nezingxenyekazi zekhompuyutha"</string>
<string name="hardware_revision" msgid="8893547686367095527">"Inguqulo yezingxenyekazi zekhompuyutha"</string>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2012-2014 The CyanogenMod Project
+
+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.
+-->
+<resources>
+ <!-- Arrays for root access capability -->
+ <string-array name="root_access_entries">
+ <item>@string/root_access_none</item>
+ <item>@string/root_access_apps</item>
+ <item>@string/root_access_adb</item>
+ <item>@string/root_access_all</item>
+ </string-array>
+
+ <string-array name="root_access_values">
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ </string-array>
+</resources>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2012-2014 The CyanogenMod Project
+
+ 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.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Setting checkbox title for root access -->
+ <string name="root_access">Root access</string>
+ <string name="root_access_warning_title">Allow root access?</string>
+ <string name="root_access_warning_message">Allowing applications to request root access is very dangerous and could compromise the security of your system!</string>
+ <string name="root_access_none">Disabled</string>
+ <string name="root_access_apps">Apps only</string>
+ <string name="root_access_adb">ADB only</string>
+ <string name="root_access_all">Apps and ADB</string>
+</resources>
<!-- About phone screen, status item label [CHAR LIMIT=60] -->
<string name="security_patch">Android security patch level</string>
<!-- About phone screen, status item label [CHAR LIMIT=40] -->
+ <string name="device_manufacturer">Manufacturer</string>
+ <!-- About phone screen, status item label [CHAR LIMIT=40] -->
<string name="model_info">Model</string>
<!-- About phone screen, dialog title for showing hardware information such as model, serial number, etc.[CHAR LIMIT=60] -->
<string name="hardware_info">Model & hardware</string>
<!-- About phone screen, setting option name [CHAR LIMIT=40] -->
<string name="kernel_version">Kernel version</string>
<!-- About phone screen, setting option name [CHAR LIMIT=40] -->
+ <string name="opengl_version">OpenGL driver version</string>
+ <!-- About phone screen, setting option name [CHAR LIMIT=40] -->
<string name="build_number">Build number</string>
<!-- About phone screen, setting option name [CHAR LIMIT=40] -->
<string name="selinux_status">SELinux status</string>
features of your phone may stop working correctly until you power it off
and then on again.</string>
+ <!-- Android-x86 settings -->
+ <string name="android_x86_options_title">Android-x86 options</string>
+ <string name="android_x86_dashboard_summary">Native bridge, statistics</string>
+ <string name="nativebridge_toggle_title">Enable native bridge</string>
+ <string name="nativebridge_toggle_summary">To support apps with arm native libraries</string>
+ <string name="collect_hw_info_title">Collect anonymous hardware information</string>
+ <string name="collect_hw_info_summary">To collect the hardware information of this device and send to Android-x86 statistics</string>
+ <string name="collect_apps_usage_title">Collect anonymous apps usage</string>
+ <string name="collect_apps_usage_summary">To collect the apps usage information and send to Android-x86 statistics</string>
+
<!-- Languages Settings --> <skip />
<!-- Title of Language, input & gestures setting on main settings screen. -->
<string name="language_input_gesture_title">Languages, input & gestures</string>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android-x86 Open Source Project
+
+ 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.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
+ android:title="@string/android_x86_options_title">
+
+ <SwitchPreference android:key="toggle_nb"
+ android:title="@string/nativebridge_toggle_title"
+ android:summary="@string/nativebridge_toggle_summary"
+ android:persistent="false" />
+
+ <SwitchPreference android:key="toggle_hw_info"
+ android:title="@string/collect_hw_info_title"
+ android:summary="@string/collect_hw_info_summary"
+ android:persistent="false" />
+
+ <SwitchPreference android:key="toggle_apps_usage"
+ android:title="@string/collect_apps_usage_title"
+ android:summary="@string/collect_apps_usage_summary"
+ android:persistent="false" />
+
+</PreferenceScreen>
android:targetClass="com.android.settings.qstile.DevelopmentTileConfigActivity" />
</Preference>
+ <ListPreference
+ android:key="root_access"
+ android:title="@string/root_access"
+ android:persistent="false"
+ android:entries="@array/root_access_entries"
+ android:entryValues="@array/root_access_values" />
+
<PreferenceCategory android:key="debug_debugging_category"
android:title="@string/debug_debugging_category">
<Preference android:key="device_feedback"
android:title="@string/device_feedback" />
+ <!-- Device manufacturer -->
+ <Preference android:key="device_manufacturer"
+ android:title="@string/device_manufacturer"
+ android:summary="@string/device_info_default"/>
+
<!-- Device hardware model -->
<Preference
android:key="device_model"
android:title="@string/kernel_version"
android:summary="@string/summary_placeholder"/>
+ <!-- OpenGL Version -->
+ <Preference
+ android:key="opengl_version"
+ android:title="@string/opengl_version"
+ android:summary="@string/device_info_default"/>
+
<!-- Detailed build version -->
<Preference
android:key="build_number"
--- /dev/null
+/*
+ * Copyright (C) 2018-2020 The Android-x86 Open Source Project
+ *
+ * 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.android.settings;
+
+import android.app.DownloadManager;
+import android.app.DownloadManager.Query;
+import android.app.DownloadManager.Request;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.SystemProperties;
+import android.support.v7.preference.Preference;
+import android.support.v14.preference.SwitchPreference;
+import android.util.Log;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.settings.SettingsPreferenceFragment;
+import dalvik.system.VMRuntime;
+import java.io.File;
+
+public class AndroidX86DashboardFragment extends SettingsPreferenceFragment {
+
+ private DownloadManager mDownloadManager;
+ private SwitchPreference mNativeBridgePreference;
+ private SwitchPreference mHwInfoPreference;
+ private SwitchPreference mAppsUsagePreference;
+
+ private static final String TAG = "Dl-NB";
+ private static final String KEY_TOGGLE_NB = "toggle_nb";
+ private static final String PROPERTY_NATIVEBRIDGE = "persist.sys.nativebridge";
+ private static final String KEY_TOGGLE_HW_INFO = "toggle_hw_info";
+ private static final String PROPERTY_HW_INFO = "persist.sys.hw_statistics";
+ private static final String KEY_TOGGLE_APPS_USAGE = "toggle_apps_usage";
+ private static final String PROPERTY_APPS_USAGE = "persist.sys.apps_statistics";
+ private static final String NB_LIBRARIES = "Native bridge libraries ";
+ private static long sDownloadId = -1;
+ private static int sDownloadStatus = -1;
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ mDownloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
+ addPreferencesFromResource(R.xml.android_x86_options);
+ mNativeBridgePreference = (SwitchPreference) findPreference(KEY_TOGGLE_NB);
+ checkNativeBridgeStatus();
+ mHwInfoPreference = (SwitchPreference) findPreference(KEY_TOGGLE_HW_INFO);
+ mHwInfoPreference.setChecked(SystemProperties.getBoolean(PROPERTY_HW_INFO, true));
+ mAppsUsagePreference = (SwitchPreference) findPreference(KEY_TOGGLE_APPS_USAGE);
+ mAppsUsagePreference.setChecked(SystemProperties.getBoolean(PROPERTY_APPS_USAGE, false));
+ }
+
+ @Override
+ public boolean onPreferenceTreeClick(Preference preference) {
+ if (preference == mNativeBridgePreference) {
+ setNativeBridge(mNativeBridgePreference.isChecked());
+ } else if (preference == mHwInfoPreference) {
+ SystemProperties.set(PROPERTY_HW_INFO, Boolean.toString(mHwInfoPreference.isChecked()));
+ } else if (preference == mAppsUsagePreference) {
+ SystemProperties.set(PROPERTY_APPS_USAGE, Boolean.toString(mAppsUsagePreference.isChecked()));
+ }
+ return super.onPreferenceTreeClick(preference);
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return MetricsEvent.APPLICATION;
+ }
+
+ private boolean isNativeBridgeAvailable() {
+ File file = new File("/system/lib/libhoudini.so");
+ return file.length() > 0;
+ }
+
+ private void checkNativeBridgeStatus() {
+ boolean nb = SystemProperties.getBoolean(PROPERTY_NATIVEBRIDGE, false);
+ if (!isNativeBridgeAvailable()) {
+ queryDownloading(mDownloadManager);
+ if (sDownloadStatus == DownloadManager.STATUS_RUNNING) {
+ nb = true;
+ } else if (nb) {
+ downloadNativeBridge();
+ }
+ }
+ mNativeBridgePreference.setChecked(nb);
+ }
+
+ private void setNativeBridge(boolean enabled) {
+ Log.d(TAG, "setNativeBridge: " + enabled);
+ if (isNativeBridgeAvailable()) {
+ setNativeBridgeProperty(enabled);
+ } else if (enabled) {
+ downloadNativeBridge();
+ } else if (sDownloadId != -1) {
+ mDownloadManager.remove(sDownloadId);
+ sDownloadId = -1;
+ }
+ }
+
+ private void downloadNativeBridge() {
+ String url, file;
+ if (VMRuntime.getRuntime().is64Bit()) {
+ url = "https://t.cn/RBJ7eml";
+ file = "houdini8_y.sfs";
+ } else {
+ url = "https://t.cn/RBJ7mfG";
+ file = "houdini8_x.sfs";
+ }
+
+ File path = Environment.getExternalStoragePublicDirectory("arm");
+ path.mkdirs();
+ File nb = new File(path, file);
+ if (nb.exists()) {
+ if (sDownloadId != -1) {
+ switch (sDownloadStatus) {
+ case DownloadManager.STATUS_SUCCESSFUL:
+ setNativeBridgeProperty(true); // fall through
+ case DownloadManager.STATUS_RUNNING:
+ return;
+ default:
+ break;
+ }
+ }
+ nb.delete();
+ }
+ mDownloadManager.remove(sDownloadId);
+
+ Request request = new Request(Uri.parse(url)).
+ setDestinationUri(Uri.fromFile(nb)).
+ setTitle(NB_LIBRARIES + file.substring(7, 10));
+
+ sDownloadId = mDownloadManager.enqueue(request);
+ Log.i(TAG, "downloading " + url);
+ }
+
+ private static void queryDownloading(DownloadManager dm) {
+ Query query = new Query().setFilterByString(NB_LIBRARIES);
+ Cursor c = null;
+ try {
+ c = dm.query(query);
+ if (c.moveToFirst()) {
+ sDownloadId = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_ID));
+ sDownloadStatus = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));
+ Log.i(TAG, "id: " + sDownloadId + " status: " + sDownloadStatus);
+ }
+ } catch (Exception e) {
+ Log.w(TAG, "Exception: " + e);
+ } finally {
+ if (c != null) {
+ c.close();
+ }
+ }
+ }
+
+ private static void setNativeBridgeProperty(boolean enabled) {
+ SystemProperties.set(PROPERTY_NATIVEBRIDGE, enabled ? "1" : "0");
+ }
+
+ public static void onDownloadComplete(DownloadManager dm) {
+ queryDownloading(dm);
+ boolean success = sDownloadStatus == DownloadManager.STATUS_SUCCESSFUL;
+ if (success) {
+ Log.i(TAG, "download success, native bridge enabled");
+ } else {
+ Log.w(TAG, "download failed: " + sDownloadStatus);
+ }
+ setNativeBridgeProperty(success);
+ }
+}
import com.android.settings.deviceinfo.AdditionalSystemUpdatePreferenceController;
import com.android.settings.deviceinfo.BasebandVersionPreferenceController;
import com.android.settings.deviceinfo.BuildNumberPreferenceController;
+import com.android.settings.deviceinfo.DeviceManufacturerPreferenceController;
import com.android.settings.deviceinfo.DeviceModelPreferenceController;
import com.android.settings.deviceinfo.FccEquipmentIdPreferenceController;
import com.android.settings.deviceinfo.FeedbackPreferenceController;
import com.android.settings.deviceinfo.FirmwareVersionPreferenceController;
import com.android.settings.deviceinfo.KernelVersionPreferenceController;
import com.android.settings.deviceinfo.ManualPreferenceController;
+import com.android.settings.deviceinfo.OpenGLVersionPreferenceController;
import com.android.settings.deviceinfo.RegulatoryInfoPreferenceController;
import com.android.settings.deviceinfo.SELinuxStatusPreferenceController;
import com.android.settings.deviceinfo.SafetyInfoPreferenceController;
controllers.add(new ManualPreferenceController(context));
controllers.add(new FeedbackPreferenceController(fragment, context));
controllers.add(new KernelVersionPreferenceController(context));
+ controllers.add(new OpenGLVersionPreferenceController(context));
controllers.add(new BasebandVersionPreferenceController(context));
controllers.add(new FirmwareVersionPreferenceController(context, lifecycle));
controllers.add(new RegulatoryInfoPreferenceController(context));
+ controllers.add(new DeviceManufacturerPreferenceController(context));
controllers.add(new DeviceModelPreferenceController(context, fragment));
controllers.add(new SecurityPatchPreferenceController(context));
controllers.add(new FccEquipmentIdPreferenceController(context));
--- /dev/null
+/*
+ * Copyright (C) 2020 The Android-x86 Open Source Project
+ *
+ * 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.android.settings;
+
+import android.app.DownloadManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+import static com.android.settings.AndroidX86DashboardFragment.onDownloadComplete;
+
+public final class DownloadCompleteReceiver extends BroadcastReceiver {
+ private static final String TAG = "Dl-Receiver";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (intent.getAction().equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) {
+ DownloadManager dm = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
+ onDownloadComplete(dm);
+ }
+ }
+}
public static class NightDisplaySuggestionActivity extends NightDisplaySettingsActivity { /* empty */ }
public static class DeviceInfoSettingsActivity extends SettingsActivity { /* empty */ }
public static class ApplicationSettingsActivity extends SettingsActivity { /* empty */ }
+ public static class AndroidX86DashboardActivity extends SettingsActivity { /* empty */ }
public static class ManageApplicationsActivity extends SettingsActivity { /* empty */ }
public static class ManageAssistActivity extends SettingsActivity { /* empty */ }
public static class AllApplicationsActivity extends SettingsActivity { /* empty */ }
public static class PaymentSettingsActivity extends SettingsActivity { /* empty */ }
public static class PrintSettingsActivity extends SettingsActivity { /* empty */ }
public static class PrintJobSettingsActivity extends SettingsActivity { /* empty */ }
+ public static class SuperuserActivity extends SettingsActivity { /* empty */ }
public static class ZenModeSettingsActivity extends SettingsActivity { /* empty */ }
public static class ZenModePrioritySettingsActivity extends SettingsActivity { /* empty */ }
public static class ZenModeAutomationSettingsActivity extends SettingsActivity { /* empty */ }
pm.hasSystemFeature(PackageManager.FEATURE_PRINTING), isAdmin)
|| somethingChanged;
+ somethingChanged = setTileEnabled(new ComponentName(packageName,
+ Settings.SuperuserActivity.class.getName()),
+ DevelopmentSettings.isRootForAppsEnabled(), isAdmin)
+ || somethingChanged;
+
final boolean showDev = mDevelopmentPreferences.getBoolean(
DevelopmentSettings.PREF_SHOW, android.os.Build.TYPE.equals("eng"))
&& !um.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES);
import com.android.settings.ApnEditor;
import com.android.settings.ApnSettings;
+import com.android.settings.AndroidX86DashboardFragment;
import com.android.settings.CryptKeeperSettings;
import com.android.settings.DateTimeSettings;
import com.android.settings.DeviceAdminSettings;
import com.android.settings.bluetooth.BluetoothDeviceDetailsFragment;
import com.android.settings.bluetooth.BluetoothSettings;
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
+import com.android.settings.cyanogenmod.superuser.PolicyNativeFragment;
import com.android.settings.dashboard.SupportFragment;
import com.android.settings.datausage.DataPlanUsageSummary;
import com.android.settings.datausage.DataUsageList;
SpecialAccessSettings.class.getName(),
NotificationAccessSettings.class.getName(),
ZenAccessSettings.class.getName(),
+ PolicyNativeFragment.class.getName(),
PrintSettingsFragment.class.getName(),
PrintJobSettingsFragment.class.getName(),
TrustedCredentialsSettings.class.getName(),
NetworkDashboardFragment.class.getName(),
ConnectedDeviceDashboardFragment.class.getName(),
AppAndNotificationDashboardFragment.class.getName(),
+ AndroidX86DashboardFragment.class.getName(),
UserAndAccountDashboardFragment.class.getName(),
EnterprisePrivacySettings.class.getName(),
WebViewAppPicker.class.getName(),
Settings.NetworkDashboardActivity.class.getName(),
Settings.ConnectedDeviceDashboardActivity.class.getName(),
Settings.AppAndNotificationDashboardActivity.class.getName(),
+ Settings.AndroidX86DashboardActivity.class.getName(),
Settings.DisplaySettingsActivity.class.getName(),
Settings.SoundSettingsActivity.class.getName(),
Settings.StorageDashboardActivity.class.getName(),
--- /dev/null
+package com.android.settings.cyanogenmod.superuser;
+
+public class MultitaskSuRequestActivity extends com.koushikdutta.superuser.MultitaskSuRequestActivity {
+}
\ No newline at end of file
--- /dev/null
+package com.android.settings.cyanogenmod.superuser;
+
+public class NotifyActivity extends com.koushikdutta.superuser.NotifyActivity {
+}
\ No newline at end of file
--- /dev/null
+package com.android.settings.cyanogenmod.superuser;
+
+public class PolicyNativeFragment extends com.koushikdutta.superuser.PolicyNativeFragment {
+}
\ No newline at end of file
--- /dev/null
+package com.android.settings.cyanogenmod.superuser;
+
+public class RequestActivity extends com.koushikdutta.superuser.RequestActivity {
+}
\ No newline at end of file
--- /dev/null
+package com.android.settings.cyanogenmod.superuser;
+
+public class SuReceiver extends com.koushikdutta.superuser.SuReceiver {
+}
\ No newline at end of file
private static final String INACTIVE_APPS_KEY = "inactive_apps";
+ private static final String ROOT_ACCESS_KEY = "root_access";
+ private static final String ROOT_ACCESS_PROPERTY = "persist.sys.root_access";
+
private static final String IMMEDIATELY_DESTROY_ACTIVITIES_KEY
= "immediately_destroy_activities";
private static final String APP_PROCESS_LIMIT_KEY = "app_process_limit";
private SwitchPreference mColorTemperaturePreference;
+ private PreferenceScreen mProcessStats;
+ private ListPreference mRootAccess;
+ private Object mSelectedRootValue;
+
private final ArrayList<Preference> mAllPrefs = new ArrayList<>();
private final ArrayList<SwitchPreference> mResetSwitchPrefs = new ArrayList<>();
private Dialog mAdbKeysDialog;
private boolean mUnavailable;
+ private Dialog mRootDialog;
private boolean mLogpersistCleared;
private Dialog mLogpersistClearDialog;
mColorTemperaturePreference = null;
}
+ mRootAccess = (ListPreference) findPreference(ROOT_ACCESS_KEY);
+ mRootAccess.setOnPreferenceChangeListener(this);
+ if (!removeRootOptionsIfRequired()) {
+ mAllPrefs.add(mRootAccess);
+ }
addDashboardCategoryPreferences();
}
return pref;
}
+ private boolean removeRootOptionsIfRequired() {
+ // user builds don't get root, and eng always gets root
+ if (!(Build.IS_DEBUGGABLE || "eng".equals(Build.TYPE))) {
+ if (mRootAccess != null) {
+ getPreferenceScreen().removePreference(mRootAccess);
+ return true;
+ }
+ }
+
+ return false;
+ }
+
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
updateBluetoothDisableAbsVolumeOptions();
updateBluetoothEnableInbandRingingOptions();
updateBluetoothA2dpConfigurationValues();
+ updateRootAccessOptions();
}
private void resetDangerousOptions() {
resetDebuggerOptions();
writeLogpersistOption(null, true);
writeLogdSizeOption(null);
+ resetRootAccessOptions();
writeAnimationScaleOption(0, mWindowAnimationScale, null);
writeAnimationScaleOption(1, mTransitionAnimationScale, null);
writeAnimationScaleOption(2, mAnimatorDurationScale, null);
pokeSystemProperties();
}
+ public static boolean isRootForAppsEnabled() {
+ int value = SystemProperties.getInt(ROOT_ACCESS_PROPERTY, 1);
+ boolean daemonState =
+ SystemProperties.get("init.svc.su_daemon", "absent").equals("running");
+ return daemonState && (value == 1 || value == 3);
+ }
+
+ private void updateRootAccessOptions() {
+ String value = SystemProperties.get(ROOT_ACCESS_PROPERTY, "1");
+ mRootAccess.setValue(value);
+ mRootAccess.setSummary(getResources()
+ .getStringArray(R.array.root_access_entries)[Integer.valueOf(value)]);
+ }
+
+ private void writeRootAccessOptions(Object newValue) {
+ String oldValue = SystemProperties.get(ROOT_ACCESS_PROPERTY, "1");
+ SystemProperties.set(ROOT_ACCESS_PROPERTY, newValue.toString());
+ if (Integer.valueOf(newValue.toString()) < 2 && !oldValue.equals(newValue)
+ && "1".equals(SystemProperties.get("service.adb.root", "0"))) {
+ SystemProperties.set("service.adb.root", "0");
+ Settings.Secure.putInt(getActivity().getContentResolver(),
+ Settings.Secure.ADB_ENABLED, 0);
+ Settings.Secure.putInt(getActivity().getContentResolver(),
+ Settings.Secure.ADB_ENABLED, 1);
+ }
+ updateRootAccessOptions();
+ }
+
+ private void resetRootAccessOptions() {
+ String oldValue = SystemProperties.get(ROOT_ACCESS_PROPERTY, "1");
+ SystemProperties.set(ROOT_ACCESS_PROPERTY, "1");
+ if (!oldValue.equals("1") && "1".equals(SystemProperties.get("service.adb.root", "0"))) {
+ SystemProperties.set("service.adb.root", "0");
+ Settings.Secure.putInt(getActivity().getContentResolver(),
+ Settings.Secure.ADB_ENABLED, 0);
+ Settings.Secure.putInt(getActivity().getContentResolver(),
+ Settings.Secure.ADB_ENABLED, 1);
+ }
+ updateRootAccessOptions();
+ }
+
private void updateHdcpValues() {
ListPreference hdcpChecking = (ListPreference) findPreference(HDCP_CHECKING_KEY);
if (hdcpChecking != null) {
} else if (preference == mSimulateColorSpace) {
writeSimulateColorSpace(newValue);
return true;
+ } else if (preference == mRootAccess) {
+ if ("0".equals(SystemProperties.get(ROOT_ACCESS_PROPERTY, "1"))
+ && !"0".equals(newValue)) {
+ mSelectedRootValue = newValue;
+ mDialogClicked = false;
+ if (mRootDialog != null) {
+ dismissDialogs();
+ }
+ mRootDialog = new AlertDialog.Builder(getActivity())
+ .setMessage(getResources().getString(R.string.root_access_warning_message))
+ .setTitle(R.string.root_access_warning_title)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setPositiveButton(android.R.string.yes, this)
+ .setNegativeButton(android.R.string.no, this).show();
+ mRootDialog.setOnDismissListener(this);
+ } else {
+ writeRootAccessOptions(newValue);
+ }
+ return true;
}
return false;
}
mLogpersistClearDialog.dismiss();
mLogpersistClearDialog = null;
}
+ if (mRootDialog != null) {
+ mRootDialog.dismiss();
+ mRootDialog = null;
+ }
}
public void onClick(DialogInterface dialog, int which) {
} else {
updateLogpersistValues();
}
+ } else if (dialog == mRootDialog) {
+ if (which == DialogInterface.BUTTON_POSITIVE) {
+ writeRootAccessOptions(mSelectedRootValue);
+ } else {
+ // Reset the option
+ writeRootAccessOptions("0");
+ }
}
}
--- /dev/null
+/*
+ * Copyright (C) 2017 The Android-x86 Open Source Project
+ *
+ * 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.android.settings.deviceinfo;
+
+import android.content.Context;
+import android.os.Build;
+import android.support.v7.preference.Preference;
+
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.core.AbstractPreferenceController;
+
+public class DeviceManufacturerPreferenceController extends AbstractPreferenceController
+ implements PreferenceControllerMixin {
+
+ private static final String KEY_DEVICE_MANUFACTURER = "device_manufacturer";
+
+ public DeviceManufacturerPreferenceController(Context context) {
+ super(context);
+ }
+
+ @Override
+ public boolean isAvailable() {
+ return true;
+ }
+
+ @Override
+ public void updateState(Preference preference) {
+ super.updateState(preference);
+ preference.setSummary(Build.MANUFACTURER);
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return KEY_DEVICE_MANUFACTURER;
+ }
+}
--- /dev/null
+/*
+ * Copyright (C) 2017 The Android-x86 Open Source Project
+ *
+ * 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.android.settings.deviceinfo;
+
+import android.content.Context;
+import android.graphics.SurfaceTexture;
+import android.opengl.EGL14;
+import android.opengl.GLES20;
+import android.opengl.GLSurfaceView.EGLConfigChooser;
+import android.support.v7.preference.Preference;
+import android.util.Log;
+import javax.microedition.khronos.egl.EGL10;
+import javax.microedition.khronos.egl.EGLConfig;
+import javax.microedition.khronos.egl.EGLContext;
+import javax.microedition.khronos.egl.EGLDisplay;
+import javax.microedition.khronos.egl.EGLSurface;
+
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.core.AbstractPreferenceController;
+
+public class OpenGLVersionPreferenceController extends AbstractPreferenceController
+ implements PreferenceControllerMixin {
+
+ private static final String KEY_OPENGL_VERSION = "opengl_version";
+ private static final String LOG_TAG = KEY_OPENGL_VERSION;
+
+ public OpenGLVersionPreferenceController(Context context) {
+ super(context);
+ }
+
+ @Override
+ public boolean isAvailable() {
+ return true;
+ }
+
+ @Override
+ public void updateState(Preference preference) {
+ super.updateState(preference);
+
+ // Create an EGL Context
+ // References:
+ // [1] http://wlog.flatlib.jp/archive/1/2013-12-22
+ // [2] packages/apps/Camera2/src/com/android/camera/SurfaceTextureRenderer.java
+
+ EGL10 egl = (EGL10) EGLContext.getEGL();
+ EGLSurface eglSurface = null;
+ EGLContext eglContext = null;
+
+ // Initialize display
+ EGLDisplay eglDisplay = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
+ if (eglDisplay == EGL10.EGL_NO_DISPLAY) {
+ Log.w(LOG_TAG, "eglGetDisplay failed");
+ }
+ int[] iparam = new int[2];
+ if (!egl.eglInitialize(eglDisplay, iparam)) {
+ Log.w(LOG_TAG, "eglInitialize failed");
+ }
+
+ // Choose config
+ EGLConfig[] eglConfigs = new EGLConfig[1];
+ final int[] configSpec = { EGL10.EGL_RENDERABLE_TYPE, EGL14.EGL_OPENGL_ES2_BIT, EGL10.EGL_NONE };
+ if (egl.eglChooseConfig(eglDisplay, configSpec, eglConfigs, 1, iparam) && iparam[0] > 0) {
+ // create surface
+ SurfaceTexture surfaceTexture = new SurfaceTexture(0);
+ eglSurface = egl.eglCreateWindowSurface(
+ eglDisplay, eglConfigs[0], surfaceTexture, null);
+ if (eglSurface == null || eglSurface == EGL10.EGL_NO_SURFACE) {
+ Log.w(LOG_TAG, "eglCreateWindowSurface failed");
+ } else {
+ // Create context
+ final int[] attribList = { EGL14.EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE };
+ eglContext = egl.eglCreateContext(
+ eglDisplay, eglConfigs[0], EGL10.EGL_NO_CONTEXT, attribList);
+ if (eglContext == null || eglContext == EGL10.EGL_NO_CONTEXT) {
+ Log.w(LOG_TAG, "eglCreateContext failed");
+ }
+
+ // Bind context
+ if (!egl.eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext)) {
+ Log.w(LOG_TAG, "eglMakeCurrent failed");
+ }
+ }
+ } else {
+ Log.w(LOG_TAG, "eglChooseConfig failed");
+ }
+
+ preference.setSummary(
+ "GL Vendor: " + GLES20.glGetString(GLES20.GL_VENDOR) + "\n" +
+ "GL Renderer: " + GLES20.glGetString(GLES20.GL_RENDERER) + "\n" +
+ "GL Version: " + GLES20.glGetString(GLES20.GL_VERSION));
+
+ if (eglContext != null) {
+ egl.eglMakeCurrent(eglDisplay, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_CONTEXT);
+ egl.eglDestroyContext(eglDisplay, eglContext);
+ egl.eglDestroySurface(eglDisplay, eglSurface);
+ }
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return KEY_OPENGL_VERSION;
+ }
+}
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
+import android.os.ServiceManager;
import android.provider.Settings;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.ListPreference;
}
public static boolean isAvailable(Context context) {
- return context.getSystemService(Context.DISPLAY_SERVICE) != null
- && context.getSystemService(Context.WIFI_P2P_SERVICE) != null;
+ try {
+ return context.getSystemService(Context.DISPLAY_SERVICE) != null
+ && context.getSystemService(Context.WIFI_P2P_SERVICE) != null;
+ } catch (Exception e) {
+ // Service is not registered, so this is definitely not available.
+ return false;
+ }
}
private void scheduleUpdate(int changes) {
package com.android.settings.wfd;
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
import android.app.Activity;
import android.content.Context;
import android.hardware.display.DisplayManager;
import android.media.MediaRouter;
import android.net.wifi.p2p.WifiP2pManager;
+import android.os.ServiceManager;
import com.android.settings.R;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.dashboard.SummaryLoader;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class WifiDisplaySettingsTest {
public void isAvailable_noService_shouldReturnFalse() {
assertThat(WifiDisplaySettings.isAvailable(mActivity))
.isFalse();
+ }
+ @Test
+ public void isAvailable_throwException_shouldReturnFalse() {
+ when(mActivity.getSystemService(Context.WIFI_P2P_SERVICE))
+ .thenThrow(new IllegalStateException());
+
+ assertThat(WifiDisplaySettings.isAvailable(mActivity))
+ .isFalse();
}
@Test