Cleanup and refactor guided by Android Studio's code analysis.
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c81e0f8..5ed9453 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1,24 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.fairphone.updater"
- android:versionCode="14"
- android:versionName="14 (FP 1.8.2)" >
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.fairphone.updater"
+ android:versionCode="15"
+ android:versionName="15 (FP 1.8.2)" >
<uses-sdk
android:minSdkVersion="17"
- android:targetSdkVersion="17" />
+ android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.REBOOT" />
+ <uses-permission android:name="android.permission.REBOOT"
+ tools:ignore="ProtectedPermissions"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
- <uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />
+ <uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM"
+ tools:ignore="ProtectedPermissions"/>
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED" />
<application
@@ -76,10 +79,10 @@
android:screenOrientation="portrait"
android:launchMode="singleTop" >
<intent-filter>
- <action android:name="android.intent.action.VIEW"></action>
- <category android:name="android.intent.category.DEFAULT"></category>
- <category android:name="android.intent.category.BROWSABLE"></category>
- <data android:host="beta" android:scheme="fairphone"></data>
+ <action android:name="android.intent.action.VIEW"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ <category android:name="android.intent.category.BROWSABLE"/>
+ <data android:host="beta" android:scheme="fairphone"/>
</intent-filter>
</activity>
</application>
diff --git a/crashlytics.properties b/crashlytics.properties
index 863b593..68feadc 100644
--- a/crashlytics.properties
+++ b/crashlytics.properties
@@ -1,3 +1,4 @@
#Contains API Secret used to validate your application. Commit to internal source control; avoid making secret public.
#Wed Jun 25 11:27:21 BST 2014
+# suppress inspection "UnusedProperty"
apiSecret=063db1d511c06cd4ced4fb6d5a39b3bf633d741323cc0312266f5abe2d6881dc
diff --git a/res/layout/activity_updater.xml b/res/layout/activity_updater.xml
index b3c25f2..17f6a34 100644
--- a/res/layout/activity_updater.xml
+++ b/res/layout/activity_updater.xml
@@ -1,9 +1,8 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/background"
- android:orientation="vertical" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/background"
+ android:orientation="vertical">
<include layout="@layout/header" />
diff --git a/res/layout/fragment_app_store_detail.xml b/res/layout/fragment_app_store_detail.xml
index 30058a0..b664c0a 100644
--- a/res/layout/fragment_app_store_detail.xml
+++ b/res/layout/fragment_app_store_detail.xml
@@ -1,13 +1,12 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/pink"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:paddingBottom="@dimen/main_padding"
- android:paddingLeft="@dimen/main_padding"
- android:paddingRight="@dimen/main_padding" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/pink"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:paddingBottom="@dimen/main_padding"
+ android:paddingLeft="@dimen/main_padding"
+ android:paddingRight="@dimen/main_padding">
<TextView
android:id="@+id/version_details_title_text"
diff --git a/res/layout/fragment_app_store_options_list.xml b/res/layout/fragment_app_store_options_list.xml
index b9624cd..0a9b7c2 100644
--- a/res/layout/fragment_app_store_options_list.xml
+++ b/res/layout/fragment_app_store_options_list.xml
@@ -1,32 +1,23 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center_horizontal"
- android:orientation="vertical" >
+ android:id="@+id/older_versions_group"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:orientation="vertical" >
- <LinearLayout
- android:id="@+id/older_versions_group"
+ <ScrollView
+ android:id="@+id/version_list_scroll"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
+ android:layout_height="0dp"
+ android:layout_marginTop="@dimen/main_padding"
+ android:layout_weight="1"
android:orientation="vertical" >
- <ScrollView
- android:id="@+id/version_list_scroll"
+ <LinearLayout
+ android:id="@+id/version_list_container"
android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_marginTop="@dimen/main_padding"
- android:layout_weight="1"
- android:orientation="vertical" >
-
- <LinearLayout
- android:id="@+id/version_list_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:clickable="true"
- android:orientation="vertical" />
- </ScrollView>
- </LinearLayout>
-
+ android:layout_height="wrap_content"
+ android:clickable="true"
+ android:orientation="vertical" />
+ </ScrollView>
</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/fragment_download_android.xml b/res/layout/fragment_download_android.xml
index 2bc8f50..0758906 100644
--- a/res/layout/fragment_download_android.xml
+++ b/res/layout/fragment_download_android.xml
@@ -1,14 +1,13 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/download_info_group"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/green"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:paddingBottom="@dimen/main_padding"
- android:paddingLeft="@dimen/main_padding"
- android:paddingRight="@dimen/main_padding" >
+ android:id="@+id/download_info_group"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/green"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:paddingBottom="@dimen/main_padding"
+ android:paddingLeft="@dimen/main_padding"
+ android:paddingRight="@dimen/main_padding">
<TextView
android:id="@+id/download_version_name_text"
diff --git a/res/layout/fragment_download_android_confirmation_popup.xml b/res/layout/fragment_download_android_confirmation_popup.xml
index ee327de..2a8a63e 100644
--- a/res/layout/fragment_download_android_confirmation_popup.xml
+++ b/res/layout/fragment_download_android_confirmation_popup.xml
@@ -1,10 +1,9 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:padding="@dimen/alert_padding" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:padding="@dimen/alert_padding">
<TextView
style="@style/TextLight24GreenDark"
diff --git a/res/layout/fragment_download_app_store.xml b/res/layout/fragment_download_app_store.xml
index b795c7c..5285e28 100644
--- a/res/layout/fragment_download_app_store.xml
+++ b/res/layout/fragment_download_app_store.xml
@@ -1,14 +1,13 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/download_info_group"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/pink"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:paddingBottom="@dimen/main_padding"
- android:paddingLeft="@dimen/main_padding"
- android:paddingRight="@dimen/main_padding" >
+ android:id="@+id/download_info_group"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/pink"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:paddingBottom="@dimen/main_padding"
+ android:paddingLeft="@dimen/main_padding"
+ android:paddingRight="@dimen/main_padding">
<TextView
android:id="@+id/download_version_name_text"
diff --git a/res/layout/fragment_download_fairphone.xml b/res/layout/fragment_download_fairphone.xml
index 1cf80e4..10c2487 100644
--- a/res/layout/fragment_download_fairphone.xml
+++ b/res/layout/fragment_download_fairphone.xml
@@ -1,14 +1,13 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/download_info_group"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/blue"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:paddingBottom="@dimen/main_padding"
- android:paddingLeft="@dimen/main_padding"
- android:paddingRight="@dimen/main_padding" >
+ android:id="@+id/download_info_group"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/blue"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:paddingBottom="@dimen/main_padding"
+ android:paddingLeft="@dimen/main_padding"
+ android:paddingRight="@dimen/main_padding">
<TextView
android:id="@+id/download_version_name_text"
diff --git a/res/layout/fragment_download_fairphone_confirmation_popup.xml b/res/layout/fragment_download_fairphone_confirmation_popup.xml
index 2dcc5ed..1ed17cf 100644
--- a/res/layout/fragment_download_fairphone_confirmation_popup.xml
+++ b/res/layout/fragment_download_fairphone_confirmation_popup.xml
@@ -1,10 +1,9 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:padding="@dimen/alert_padding" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:padding="@dimen/alert_padding">
<TextView
style="@style/TextLight24BlueDark"
diff --git a/res/layout/fragment_info_android_popup.xml b/res/layout/fragment_info_android_popup.xml
index 1512a64..a241d5d 100644
--- a/res/layout/fragment_info_android_popup.xml
+++ b/res/layout/fragment_info_android_popup.xml
@@ -1,10 +1,9 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:padding="@dimen/alert_padding" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:padding="@dimen/alert_padding">
<TextView
style="@style/TextLight24GreenDark"
diff --git a/res/layout/fragment_info_fairphone_popup.xml b/res/layout/fragment_info_fairphone_popup.xml
index 503bbdf..6271069 100644
--- a/res/layout/fragment_info_fairphone_popup.xml
+++ b/res/layout/fragment_info_fairphone_popup.xml
@@ -1,10 +1,9 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:padding="@dimen/alert_padding" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:padding="@dimen/alert_padding">
<TextView
style="@style/TextLight24BlueDark"
diff --git a/res/layout/fragment_main.xml b/res/layout/fragment_main.xml
index b2b897b..41fadca 100644
--- a/res/layout/fragment_main.xml
+++ b/res/layout/fragment_main.xml
@@ -1,8 +1,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
diff --git a/res/layout/fragment_main_update_available_android.xml b/res/layout/fragment_main_update_available_android.xml
index 718fd39..b6029ea 100644
--- a/res/layout/fragment_main_update_available_android.xml
+++ b/res/layout/fragment_main_update_available_android.xml
@@ -1,14 +1,13 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/update_available_group"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/green"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:paddingLeft="@dimen/main_padding"
- android:paddingRight="@dimen/main_padding"
- android:visibility="visible" >
+ android:id="@+id/update_available_group"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/green"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:paddingLeft="@dimen/main_padding"
+ android:paddingRight="@dimen/main_padding"
+ android:visibility="visible">
<TextView
style="@style/TextRegular16GreenDark"
diff --git a/res/layout/fragment_main_update_available_fairphone.xml b/res/layout/fragment_main_update_available_fairphone.xml
index 7b67503..b397d8e 100644
--- a/res/layout/fragment_main_update_available_fairphone.xml
+++ b/res/layout/fragment_main_update_available_fairphone.xml
@@ -1,14 +1,13 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/update_available_group"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/blue"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:paddingLeft="@dimen/main_padding"
- android:paddingRight="@dimen/main_padding"
- android:visibility="visible" >
+ android:id="@+id/update_available_group"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/blue"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:paddingLeft="@dimen/main_padding"
+ android:paddingRight="@dimen/main_padding"
+ android:visibility="visible">
<TextView
style="@style/TextRegular16BlueDark"
diff --git a/res/layout/fragment_other_os_options.xml b/res/layout/fragment_other_os_options.xml
index b808722..54c799e 100644
--- a/res/layout/fragment_other_os_options.xml
+++ b/res/layout/fragment_other_os_options.xml
@@ -1,8 +1,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
<LinearLayout
android:id="@+id/other_os_options_group"
diff --git a/res/layout/fragment_other_os_options_android_list.xml b/res/layout/fragment_other_os_options_android_list.xml
index 2bf04bd..95f00bd 100644
--- a/res/layout/fragment_other_os_options_android_list.xml
+++ b/res/layout/fragment_other_os_options_android_list.xml
@@ -1,9 +1,8 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center_horizontal"
- android:orientation="vertical" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center_horizontal"
+ android:orientation="vertical">
<LinearLayout
android:id="@+id/other_os_options_android_latest_version_group"
diff --git a/res/layout/fragment_other_os_options_fairphone_list.xml b/res/layout/fragment_other_os_options_fairphone_list.xml
index 7e23377..8b018be 100644
--- a/res/layout/fragment_other_os_options_fairphone_list.xml
+++ b/res/layout/fragment_other_os_options_fairphone_list.xml
@@ -1,9 +1,8 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center_horizontal"
- android:orientation="vertical" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center_horizontal"
+ android:orientation="vertical">
<LinearLayout
android:id="@+id/other_os_options_fairphone_latest_version_group"
diff --git a/res/layout/fragment_version_detail_android.xml b/res/layout/fragment_version_detail_android.xml
index 86af886..327b007 100644
--- a/res/layout/fragment_version_detail_android.xml
+++ b/res/layout/fragment_version_detail_android.xml
@@ -1,13 +1,12 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/green"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:paddingBottom="@dimen/main_padding"
- android:paddingLeft="@dimen/main_padding"
- android:paddingRight="@dimen/main_padding" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/green"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:paddingBottom="@dimen/main_padding"
+ android:paddingLeft="@dimen/main_padding"
+ android:paddingRight="@dimen/main_padding">
<TextView
android:id="@+id/version_details_title_text"
diff --git a/res/layout/fragment_version_detail_fairphone.xml b/res/layout/fragment_version_detail_fairphone.xml
index 42ed084..715d8f9 100644
--- a/res/layout/fragment_version_detail_fairphone.xml
+++ b/res/layout/fragment_version_detail_fairphone.xml
@@ -1,13 +1,12 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/blue"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:paddingBottom="@dimen/main_padding"
- android:paddingLeft="@dimen/main_padding"
- android:paddingRight="@dimen/main_padding" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/blue"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:paddingBottom="@dimen/main_padding"
+ android:paddingLeft="@dimen/main_padding"
+ android:paddingRight="@dimen/main_padding">
<TextView
android:id="@+id/version_details_title_text"
diff --git a/res/layout/header.xml b/res/layout/header.xml
index da0ede6..8566ae6 100644
--- a/res/layout/header.xml
+++ b/res/layout/header.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools" >
+ >
<FrameLayout
android:layout_width="match_parent"
diff --git a/res/values/config.xml b/res/values/config.xml
index 9495cc4..0c0fadb 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -1,42 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <string name="downloadUrl">http://www.fairphone.com/ota/</string>
+ <string name="downloadUrl" translatable="false">http://www.fairphone.com/ota/</string>
<string name="supportAppStoreUrl">https://fairphone.zendesk.com/hc/en-us/articles/201295267-How-to-re-install-the-App-Store</string>
- <string name="configFilename">updater</string>
- <string name="config_zip">.zip</string>
- <string name="config_xml">.xml</string>
- <string name="config_sig">.sig</string>
+ <string name="configFilename" translatable="false">updater</string>
+ <string name="config_zip" translatable="false">.zip</string>
+ <string name="config_xml" translatable="false">.xml</string>
+ <string name="config_sig" translatable="false">.sig</string>
<integer name="defaultVersionNumber">1</integer>
- <string name="defaultVersionName">Almond</string>
- <string name="defaultBuildNumber">1.0</string>
- <string name="defaultBuildDate">0</string>
- <string name="defaultAndroidVersionNumber">4.2.2</string>
- <string name="defaultImageType">fairphone</string>
- <string name="defaultBetaStatus">1</string>
+ <string name="defaultVersionName" translatable="false">Almond</string>
+ <string name="defaultBuildNumber" translatable="false">1.0</string>
+ <string name="defaultBuildDate" translatable="false">0</string>
+ <string name="defaultAndroidVersionNumber" translatable="false">4.2.2</string>
+ <string name="defaultImageType" translatable="false">fairphone</string>
+ <string name="defaultBetaStatus" translatable="false">1</string>
<!-- Device Model without spaces separated by semicolon. Ex: FP1;FP1U;FP2 -->
- <string name="knownFPDevices">FP1;FP1U</string>
+ <string name="knownFPDevices" translatable="false">FP1;FP1U</string>
- <string name="oneGBDataPartition">/originalPartition</string>
- <string name="unifiedDataPartition">/unifiedPartition</string>
- <string name="FP1Model">FP1</string>
- <string name="recoveryCachePath">cache</string>
- <string name="recoverySdCardPath">sdcard</string>
- <string name="updaterFolder">/updater/</string>
+ <string name="oneGBDataPartition" translatable="false">/originalPartition</string>
+ <string name="unifiedDataPartition" translatable="false">/unifiedPartition</string>
+ <string name="FP1Model" translatable="false">FP1</string>
+ <string name="recoveryCachePath" translatable="false">cache</string>
+ <string name="recoverySdCardPath" translatable="false">sdcard</string>
+ <string name="updaterFolder" translatable="false">/updater/</string>
<integer name="FP1CachePartitionSizeMb">130</integer>
<integer name="minimalCachePartitionSizeMb">300</integer>
<integer name="FP1DataPartitionSizeMb">1100</integer>
<!-- Packager -->
- <string name="removePlayStoreCommand">rm /data/app/com.android.vending-*.apk</string>
- <string name="removeGooglePlusCommand">rm /data/app/com.google.android.apps.plus-*.apk</string>
- <string name="removeSoundSearchCommand">rm /data/app/com.google.android.ears-*.apk</string>
- <string name="removeGmailCommand">rm /data/app/com.google.android.gm-*.apk</string>
- <string name="removePlayServicesCommand">rm /data/app/com.google.android.gms-*.apk</string>
- <string name="removeQuicksearchCommand">rm /data/app/com.google.android.googlequicksearchbox-*.apk</string>
- <string name="removeTalkbackCommand">rm /data/app/com.google.android.marvin.talkback-*.apk</string>
- <string name="removeText2SpeechCommand">rm /data/app/com.google.android.tts-*.apk</string>
+ <string name="removePlayStoreCommand" translatable="false">rm /data/app/com.android.vending-*.apk</string>
+ <string name="removeGooglePlusCommand" translatable="false">rm /data/app/com.google.android.apps.plus-*.apk</string>
+ <string name="removeSoundSearchCommand" translatable="false">rm /data/app/com.google.android.ears-*.apk</string>
+ <string name="removeGmailCommand" translatable="false">rm /data/app/com.google.android.gm-*.apk</string>
+ <string name="removePlayServicesCommand" translatable="false">rm /data/app/com.google.android.gms-*.apk</string>
+ <string name="removeQuicksearchCommand" translatable="false">rm /data/app/com.google.android.googlequicksearchbox-*.apk</string>
+ <string name="removeTalkbackCommand" translatable="false">rm /data/app/com.google.android.marvin.talkback-*.apk</string>
+ <string name="removeText2SpeechCommand" translatable="false">rm /data/app/com.google.android.tts-*.apk</string>
</resources>
diff --git a/src/com/fairphone/updater/BetaEnabler.java b/src/com/fairphone/updater/BetaEnabler.java
index 8401e7f..6247e22 100644
--- a/src/com/fairphone/updater/BetaEnabler.java
+++ b/src/com/fairphone/updater/BetaEnabler.java
@@ -2,7 +2,6 @@
package com.fairphone.updater;
import android.app.Activity;
-import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
@@ -17,12 +16,6 @@
private static final String BETA_ENABLED = "1";
@Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- }
-
- @Override
protected void onResume() {
super.onResume();
setContentView(R.layout.activity_beta_enabler);
@@ -35,7 +28,7 @@
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- Utils.setprop(getApplicationContext(), FAIRPHONE_BETA_PROPERTY, BETA_ENABLED);
+ Utils.setprop(FAIRPHONE_BETA_PROPERTY, BETA_ENABLED);
if (isBetaEnabled()) {
Button b = (Button) findViewById(R.id.beta_activator);
b.setEnabled(false);
diff --git a/src/com/fairphone/updater/BootBroadcastReceiver.java b/src/com/fairphone/updater/BootBroadcastReceiver.java
index 505c705..6c0f909 100644
--- a/src/com/fairphone/updater/BootBroadcastReceiver.java
+++ b/src/com/fairphone/updater/BootBroadcastReceiver.java
@@ -27,7 +27,7 @@
public class BootBroadcastReceiver extends BroadcastReceiver
{
- final static long NOTIFICATION_INTERVAL_MILLIS = 1000 * 60 * 60 * 8;
+ private final static long NOTIFICATION_INTERVAL_MILLIS = 1000 * 60 * 60 * 8;
@Override
public void onReceive(Context context, Intent intent)
diff --git a/src/com/fairphone/updater/FairphoneUpdater.java b/src/com/fairphone/updater/FairphoneUpdater.java
index 7dd7ffb..8840f62 100644
--- a/src/com/fairphone/updater/FairphoneUpdater.java
+++ b/src/com/fairphone/updater/FairphoneUpdater.java
@@ -17,7 +17,6 @@
import android.widget.Toast;
import com.crashlytics.android.Crashlytics;
-import com.crashlytics.android.internal.f;
import com.fairphone.updater.data.DownloadableItem;
import com.fairphone.updater.data.Store;
import com.fairphone.updater.data.UpdaterData;
@@ -31,8 +30,6 @@
import com.fairphone.updater.gappsinstaller.GappsInstallerHelper;
import com.fairphone.updater.tools.Utils;
-import java.util.List;
-
public class FairphoneUpdater extends FragmentActivity
{
@@ -40,21 +37,21 @@
public static final String FAIRPHONE_UPDATER_NEW_VERSION_RECEIVED = "FairphoneUpdater.NEW.VERSION.RECEIVED";
- public static final String PREFERENCE_FIRST_TIME_ANDROID = "FirstTimeAndroid";
+ private static final String PREFERENCE_FIRST_TIME_ANDROID = "FirstTimeAndroid";
- public static final String PREFERENCE_FIRST_TIME_FAIRPHONE = "FirstTimeFairphone";
+ private static final String PREFERENCE_FIRST_TIME_FAIRPHONE = "FirstTimeFairphone";
- public static final String PREFERENCE_FIRST_TIME_APP_STORE = "FirstTimeAppStore";
+ private static final String PREFERENCE_FIRST_TIME_APP_STORE = "FirstTimeAppStore";
- public static final String PREFERENCE_CURRENT_UPDATER_STATE = "CurrentUpdaterState";
+ private static final String PREFERENCE_CURRENT_UPDATER_STATE = "CurrentUpdaterState";
private static final String PREFERENCE_DOWNLOAD_ID = "LatestUpdateDownloadId";
public static final String FAIRPHONE_UPDATER_PREFERENCES = "FairphoneUpdaterPreferences";
- public static final String PREFERENCE_SELECTED_VERSION_NUMBER = "SelectedVersionNumber";
+ private static final String PREFERENCE_SELECTED_VERSION_NUMBER = "SelectedVersionNumber";
- public static final String PREFERENCE_SELECTED_VERSION_TYPE = "SelectedVersionImageType";
+ private static final String PREFERENCE_SELECTED_VERSION_TYPE = "SelectedVersionImageType";
public static final String FAIRPHONE_UPDATER_CONFIG_DOWNLOAD_FAILED = "FairphoneUpdater.Config.File.Download.FAILED";
@@ -70,7 +67,7 @@
public static enum UpdaterState
{
NORMAL, DOWNLOAD, PREINSTALL
- };
+ }
private Version mDeviceVersion;
private Version mLatestVersion;
@@ -106,7 +103,7 @@
public static enum HeaderType
{
MAIN_FAIRPHONE, MAIN_ANDROID, MAIN_APP_STORE, FAIRPHONE, ANDROID, OTHER_OS, APP_STORE
- };
+ }
@Override
protected void onCreate(Bundle savedInstanceState)
@@ -131,6 +128,7 @@
mIsFirstTimeAppStore = false;//mSharedPreferences.getBoolean(PREFERENCE_FIRST_TIME_APP_STORE, true);
mOtaDownloadUrl = mSharedPreferences.getString(PREFERENCE_OTA_DOWNLOAD_URL, getResources().getString(R.string.downloadUrl));
+ Log.wtf("SHIT FPU ", "PREFERENCE_OTA_DOWNLOAD_URL "+mOtaDownloadUrl);
// get system data
mDeviceVersion = VersionParserHelper.getDeviceVersion(this);
@@ -166,28 +164,28 @@
setupFragments(savedInstanceState);
}
- public void setupBetaStatus()
+ void setupBetaStatus()
{
BETA_MODE_ENABLED = mDeviceVersion.getBetaStatus().equals("1");
}
private void isDeviceSupported()
{
- if(!Utils.isDeviceSupported(this))
+ if(Utils.isDeviceUnsupported(this))
{
Toast.makeText(this, R.string.device_not_supported_message, Toast.LENGTH_LONG).show();
finish();
}
}
- protected void getSelectedVersionFromSharedPreferences()
+ void getSelectedVersionFromSharedPreferences()
{
String versionImageType = mSharedPreferences.getString(PREFERENCE_SELECTED_VERSION_TYPE, "");
int versionNumber = mSharedPreferences.getInt(PREFERENCE_SELECTED_VERSION_NUMBER, 0);
mSelectedVersion = UpdaterData.getInstance().getVersion(versionImageType, versionNumber);
}
- protected void getSelectedStoreFromSharedPreferences()
+ void getSelectedStoreFromSharedPreferences()
{
int storeNumber = mSharedPreferences.getInt(PREFERENCE_SELECTED_STORE_NUMBER, 0);
mSelectedStore = UpdaterData.getInstance().getStore(storeNumber);
@@ -196,7 +194,7 @@
public UpdaterState getCurrentUpdaterState()
{
- String currentState = getStringPreference(PREFERENCE_CURRENT_UPDATER_STATE);
+ String currentState = mSharedPreferences.getString(PREFERENCE_CURRENT_UPDATER_STATE, null);
if (TextUtils.isEmpty(currentState))
{
@@ -208,12 +206,7 @@
return UpdaterState.valueOf(currentState);
}
- public String getStringPreference(String key)
- {
- return mSharedPreferences.getString(key, null);
- }
-
- public long getLongPreference(String key)
+ long getLongPreference(String key)
{
return mSharedPreferences.getLong(key, 0);
}
@@ -241,7 +234,7 @@
editor.commit();
}
- public void savePreference(String key, long value)
+ void savePreference(String key, long value)
{
Editor editor = mSharedPreferences.edit();
@@ -345,7 +338,7 @@
mIsFirstTimeFairphone = false;
- editor.putBoolean(PREFERENCE_FIRST_TIME_FAIRPHONE, mIsFirstTimeFairphone);
+ editor.putBoolean(PREFERENCE_FIRST_TIME_FAIRPHONE, false);
editor.commit();
}
@@ -371,7 +364,7 @@
mIsFirstTimeAndroid = false;
- editor.putBoolean(PREFERENCE_FIRST_TIME_ANDROID, mIsFirstTimeAndroid);
+ editor.putBoolean(PREFERENCE_FIRST_TIME_ANDROID, false);
editor.commit();
}
@@ -396,7 +389,7 @@
mIsFirstTimeAppStore = false;
- editor.putBoolean(PREFERENCE_FIRST_TIME_APP_STORE, mIsFirstTimeAppStore);
+ editor.putBoolean(PREFERENCE_FIRST_TIME_APP_STORE, false);
editor.commit();
}
@@ -482,7 +475,7 @@
// an
// Intent, pass the Intent's extras to the fragment as arguments
Intent intent = getIntent();
- if (firstFragment != null && intent != null)
+ if (intent != null)
{
Bundle bundle = intent.getExtras();
if (bundle != null)
@@ -493,7 +486,7 @@
// Add the fragment to the 'fragment_container' FrameLayout
FragmentManager fragManager = getSupportFragmentManager();
- if (firstFragment != null && fragManager != null)
+ if (fragManager != null)
{
FragmentTransaction transation = fragManager.beginTransaction();
transation.add(R.id.fragment_holder, firstFragment, TAG_FIRST_FRAGMENT);
@@ -509,7 +502,7 @@
public Fragment getFragmentFromState()
{
- Fragment firstFragment = null;
+ Fragment firstFragment;
switch (mCurrentState)
{
case PREINSTALL:
@@ -581,7 +574,7 @@
}
}
- public Fragment getTopFragment()
+ Fragment getTopFragment()
{
Fragment topFragment = null;
FragmentManager fragManager = getSupportFragmentManager();
@@ -622,14 +615,7 @@
boolean update = false;
if (mLatestVersion != null)
{
- if (BETA_MODE_ENABLED)
- {
- update = true;
- }
- else
- {
- update = mLatestVersion.isNewerVersionThan(mDeviceVersion);
- }
+ update = BETA_MODE_ENABLED || mLatestVersion.isNewerVersionThan(mDeviceVersion);
}
return update;
}
@@ -771,7 +757,7 @@
mLatestVersion = getLatestVersionFromConfig();
}
- boolean mLaunchGapps = false;
+ private boolean mLaunchGapps = false;
@Override
protected void onNewIntent(Intent intent)
@@ -836,7 +822,7 @@
if (mSelectedStore != null)
{
- fragment.setupFragment(mSelectedStore, DetailLayoutType.APP_STORE);
+ fragment.setupAppStoreFragment(mSelectedStore);
}
else
{
@@ -858,12 +844,6 @@
}
}
- public void changeState(UpdaterState newState)
- {
- updateStatePreference(newState);
- changeFragment(getFragmentFromState());
- }
-
public void updateStatePreference(UpdaterState newState)
{
mCurrentState = newState;
@@ -875,13 +855,6 @@
editor.commit();
}
- @Override
- protected void onStop()
- {
- super.onStop();
-
- }
-
public long getLatestDownloadId()
{
return mLatestUpdateDownloadId;
@@ -907,8 +880,8 @@
return getLongPreference(UpdaterService.PREFERENCE_LAST_CONFIG_DOWNLOAD_ID);
}
- public void saveConfigFileDownloadId(long latestUpdateDownloadId)
+ public void clearConfigFileDownloadId()
{
- savePreference(UpdaterService.PREFERENCE_LAST_CONFIG_DOWNLOAD_ID, latestUpdateDownloadId);
+ savePreference(UpdaterService.PREFERENCE_LAST_CONFIG_DOWNLOAD_ID, 0L);
}
}
diff --git a/src/com/fairphone/updater/UpdaterService.java b/src/com/fairphone/updater/UpdaterService.java
index ae43c9d..f769840 100644
--- a/src/com/fairphone/updater/UpdaterService.java
+++ b/src/com/fairphone/updater/UpdaterService.java
@@ -82,22 +82,18 @@
private int mDownloadRetries;
private long mLatestFileDownloadId;
private boolean mInternetConnectionAvailable;
- private NotificationCompat.Builder mBuilder;
- private SharedPreferences mSharedPreferences;
+ private SharedPreferences mSharedPreferences;
- final static long DOWNLOAD_GRACE_PERIOD_IN_MS = 4 /* hour */ * 60 /* minute */ * 60 /* second */ * 1000 /* millisecond */;
+ private final static long DOWNLOAD_GRACE_PERIOD_IN_MS = 4 /* hour */ * 60 /* minute */ * 60 /* second */ * 1000 /* millisecond */;
- private BroadcastReceiver mBCastConfigFileDownload;
- private NotificationManager mNotificationManager;
-
- @Override
+ @Override
public int onStartCommand(Intent intent, int flags, int startId)
{
// remove the logs
clearDataLogs();
- if(!Utils.isDeviceSupported(getApplicationContext())){
+ if(Utils.isDeviceUnsupported(getApplicationContext())){
stopSelf();
return START_NOT_STICKY;
}
@@ -118,19 +114,16 @@
// setup the gapps installer
new GappsInstallerHelper(getApplicationContext());
- mBCastConfigFileDownload = new BroadcastReceiver()
- {
+ BroadcastReceiver mBCastConfigFileDownload = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent)
- {
- if (hasInternetConnection())
- {
- boolean forceDownload = intent.getBooleanExtra(EXTRA_FORCE_CONFIG_FILE_DOWNLOAD, false);
- downloadConfigFile(forceDownload);
- }
- }
- };
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (hasInternetConnection()) {
+ boolean forceDownload = intent.getBooleanExtra(EXTRA_FORCE_CONFIG_FILE_DOWNLOAD, false);
+ downloadConfigFile(forceDownload);
+ }
+ }
+ };
getApplicationContext().registerReceiver(mBCastConfigFileDownload, new IntentFilter(ACTION_FAIRPHONE_UPDATER_CONFIG_FILE_DOWNLOAD));
@@ -151,18 +144,18 @@
Editor editor = mSharedPreferences.edit();
editor.putBoolean(PREFERENCE_REINSTALL_GAPPS, false);
- editor.commit();
+ editor.apply();
}
}
- public void showReinstallAlert()
+ void showReinstallAlert()
{
if ( FairphoneUpdater.BETA_MODE_ENABLED )
return;
Context context = getApplicationContext();
-
- mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+
+ NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
//Intent notificationIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(context.getResources().getString(R.string.supportAppStoreUrl)));
@@ -170,14 +163,13 @@
notificationIntent.setAction(GappsInstallerHelper.EXTRA_START_GAPPS_INSTALL);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
-
- mBuilder =
- new NotificationCompat.Builder(context).setSmallIcon(R.drawable.updater_tray_icon)
- .setContentTitle(getResources().getString(R.string.app_name))
- .setContentText(context.getResources().getString(R.string.appStoreReinstall))
- .setAutoCancel(true)
- .setDefaults(Notification.DEFAULT_SOUND)
- .setContentIntent(contentIntent);
+
+ NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context).setSmallIcon(R.drawable.updater_tray_icon)
+ .setContentTitle(getResources().getString(R.string.app_name))
+ .setContentText(context.getResources().getString(R.string.appStoreReinstall))
+ .setAutoCancel(true)
+ .setDefaults(Notification.DEFAULT_SOUND)
+ .setContentIntent(contentIntent);
mNotificationManager.notify(0, mBuilder.build());
}
@@ -208,19 +200,14 @@
}
}
- protected void clearDataLogs()
+ void clearDataLogs()
{
try
{
Log.d(TAG, "Clearing dump log data...");
Shell.runCommand(new CommandCapture(0, "rm /data/log_other_mode/*_log"));
- } catch (IOException e)
+ } catch (IOException | TimeoutException e)
{
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e)
- {
- // TODO Auto-generated catch block
e.printStackTrace();
}
}
@@ -231,7 +218,7 @@
return null;
}
- public void startDownloadLatest()
+ void startDownloadLatest()
{
Resources resources = getApplicationContext().getResources();
String downloadLink = getConfigDownloadLink(getApplicationContext());
@@ -290,7 +277,8 @@
StringBuilder sb = new StringBuilder();
String download_url = mSharedPreferences.getString(FairphoneUpdater.PREFERENCE_OTA_DOWNLOAD_URL, getResources().getString(R.string.downloadUrl));
- sb.append(download_url);
+
+ sb.append(download_url);
sb.append(Build.MODEL.replaceAll("\\s", ""));
sb.append(Utils.getPartitionDownloadPath(resources));
sb.append("/");
@@ -312,19 +300,19 @@
{
// attach the model and the os
sb.append("?");
- sb.append("model=" + Build.MODEL.replaceAll("\\s", ""));
+ sb.append("model=").append(Build.MODEL.replaceAll("\\s", ""));
Version currentVersion = VersionParserHelper.getDeviceVersion(context.getApplicationContext());
if (currentVersion != null)
{
try {
final String defaultCharset = Charset.defaultCharset().displayName();
- sb.append("&os=" + URLEncoder.encode(currentVersion.getAndroidVersion(), defaultCharset));
- sb.append("&b_n=" + URLEncoder.encode(currentVersion.getBuildNumber(), defaultCharset));
- sb.append("&ota_v_n=" + URLEncoder.encode(String.valueOf(currentVersion.getNumber()), defaultCharset));
- sb.append("&d=" + URLEncoder.encode(currentVersion.getReleaseDate(), defaultCharset));
- sb.append("&beta=" + URLEncoder.encode(currentVersion.getBetaStatus(), defaultCharset));
- sb.append("&dev=" + (FairphoneUpdater.DEV_MODE_ENABLED ? "1" : "0"));
+ sb.append("&os=").append(URLEncoder.encode(currentVersion.getAndroidVersion(), defaultCharset));
+ sb.append("&b_n=").append(URLEncoder.encode(currentVersion.getBuildNumber(), defaultCharset));
+ sb.append("&ota_v_n=").append(URLEncoder.encode(String.valueOf(currentVersion.getNumber()), defaultCharset));
+ sb.append("&d=").append(URLEncoder.encode(currentVersion.getReleaseDate(), defaultCharset));
+ sb.append("&beta=").append(URLEncoder.encode(currentVersion.getBetaStatus(), defaultCharset));
+ sb.append("&dev=").append(FairphoneUpdater.DEV_MODE_ENABLED ? "1" : "0");
} catch (UnsupportedEncodingException e) {
Log.e(TAG, "Failed to add extra info on update request: "+e.getLocalizedMessage());
}
@@ -372,9 +360,13 @@
try
{
request = new Request(Uri.parse(url));
- Environment.getExternalStoragePublicDirectory(Environment.getExternalStorageDirectory() + resources.getString(R.string.updaterFolder)).mkdirs();
+ final File externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory(Environment.getExternalStorageDirectory() + resources.getString(R.string.updaterFolder));
+ final boolean mkdirs = externalStoragePublicDirectory.mkdirs();
+ if(!mkdirs && !externalStoragePublicDirectory.exists()) {
+ throw new Exception("Couldn't create updater dir structures.");
+ }
- request.setDestinationInExternalPublicDir(resources.getString(R.string.updaterFolder), fileName);
+ request.setDestinationInExternalPublicDir(resources.getString(R.string.updaterFolder), fileName);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
request.setAllowedOverRoaming(false);
request.setTitle(resources.getString(R.string.fairphone_update_message_title));
@@ -499,7 +491,11 @@
else
{
//Toast.makeText(context, resources.getString(R.string.invalid_signature_download_message), Toast.LENGTH_LONG).show();
- file.delete();
+ final boolean delete = file.delete();
+ if(!delete) {
+ Log.d(TAG, "Unable to delete "+file.getAbsolutePath());
+ }
+
}
}
diff --git a/src/com/fairphone/updater/data/DownloadableItem.java b/src/com/fairphone/updater/data/DownloadableItem.java
index 9ebc697..f99a497 100644
--- a/src/com/fairphone/updater/data/DownloadableItem.java
+++ b/src/com/fairphone/updater/data/DownloadableItem.java
@@ -31,25 +31,25 @@
private static final String DEPENDENCY_SEPARATOR = ",";
- protected int mNumber;
+ int mNumber;
- protected String mName;
+ String mName;
- protected String mOTADownloadLink;
+ String mOTADownloadLink;
- protected String mOTAMd5Sum;
+ String mOTAMd5Sum;
- protected String mBuildNumber;
+ String mBuildNumber;
- protected Map<String, String> mReleaseNotesMap;
+ private final Map<String, String> mReleaseNotesMap;
- protected String mReleaseDate;
+ String mReleaseDate;
- protected String mThumbnailImageLink;
+ String mThumbnailImageLink;
- protected ArrayList<Integer> mDependencies;
+ ArrayList<Integer> mDependencies;
- public DownloadableItem()
+ DownloadableItem()
{
setNumber(0);
setName("");
@@ -59,7 +59,7 @@
setReleaseDate("");
setThumbnailLink("");
- mReleaseNotesMap = new HashMap<String, String>();
+ mReleaseNotesMap = new HashMap<>();
}
public int getNumber()
@@ -207,7 +207,7 @@
return TextUtils.isEmpty(releaseNotes) ? "" : releaseNotes;
}
- public void resetReleaseNotes()
+ void resetReleaseNotes()
{
mReleaseNotesMap.clear();
}
diff --git a/src/com/fairphone/updater/data/Store.java b/src/com/fairphone/updater/data/Store.java
index d7402d7..f055544 100644
--- a/src/com/fairphone/updater/data/Store.java
+++ b/src/com/fairphone/updater/data/Store.java
@@ -22,7 +22,7 @@
}
@Override
- public int compareTo(Store another)
+ public int compareTo(@SuppressWarnings("NullableProblems") Store another)
{
int retVal;
if (another != null)
diff --git a/src/com/fairphone/updater/data/UpdaterData.java b/src/com/fairphone/updater/data/UpdaterData.java
index 9e92653..53bd111 100644
--- a/src/com/fairphone/updater/data/UpdaterData.java
+++ b/src/com/fairphone/updater/data/UpdaterData.java
@@ -7,12 +7,6 @@
import java.util.List;
import java.util.Map;
-import android.os.Build;
-
-import com.fairphone.updater.R;
-import com.fairphone.updater.gappsinstaller.GappsInstallerHelper;
-import com.fairphone.updater.tools.Utils;
-
public class UpdaterData
{
@@ -22,11 +16,11 @@
private int mLatestFairphoneVersionNumber;
- private Map<Integer, Version> mAOSPVersionMap;
+ private final Map<Integer, Version> mAOSPVersionMap;
- private Map<Integer, Version> mFairphoneVersionMap;
+ private final Map<Integer, Version> mFairphoneVersionMap;
- private Map<Integer, Store> mAppStoresMap;
+ private final Map<Integer, Store> mAppStoresMap;
public static UpdaterData getInstance()
{
@@ -41,9 +35,9 @@
{
mLatestAOSPVersionNumber = 0;
mLatestFairphoneVersionNumber = 0;
- mAOSPVersionMap = new HashMap<Integer, Version>();
- mFairphoneVersionMap = new HashMap<Integer, Version>();
- mAppStoresMap = new HashMap<Integer, Store>();
+ mAOSPVersionMap = new HashMap<>();
+ mFairphoneVersionMap = new HashMap<>();
+ mAppStoresMap = new HashMap<>();
}
public void resetUpdaterData()
@@ -65,7 +59,7 @@
int latestVersionNumber;
try
{
- latestVersionNumber = Integer.valueOf(latestVersion).intValue();
+ latestVersionNumber = Integer.valueOf(latestVersion);
} catch (NumberFormatException e)
{
latestVersionNumber = 0;
@@ -108,9 +102,9 @@
return version;
}
- public ArrayList<Version> mapToOrderedVersionList(Collection<Version> a)
+ ArrayList<Version> mapToOrderedVersionList(Collection<Version> a)
{
- ArrayList<Version> retval = new ArrayList<Version>();
+ ArrayList<Version> retval = new ArrayList<>();
for (Version version : a)
{
retval.add(version);
@@ -119,9 +113,9 @@
return retval;
}
- public ArrayList<Store> mapToOrderedStoreList(Collection<Store> a)
+ ArrayList<Store> mapToOrderedStoreList(Collection<Store> a)
{
- ArrayList<Store> retval = new ArrayList<Store>();
+ ArrayList<Store> retval = new ArrayList<>();
for (Store store : a)
{
retval.add(store);
@@ -132,21 +126,18 @@
public List<Version> getAOSPVersionList()
{
- ArrayList<Version> retval = mapToOrderedVersionList(mAOSPVersionMap.values());
- return retval;
+ return mapToOrderedVersionList(mAOSPVersionMap.values());
}
public List<Version> getFairphoneVersionList()
{
- ArrayList<Version> retval = mapToOrderedVersionList(mFairphoneVersionMap.values());
- return retval;
+ return mapToOrderedVersionList(mFairphoneVersionMap.values());
}
public List<Store> getAppStoreList()
{
- ArrayList<Store> retval = mapToOrderedStoreList(mAppStoresMap.values());
- return retval;
+ return mapToOrderedStoreList(mAppStoresMap.values());
}
public Version getVersion(String imageType, int versionNumber)
@@ -169,14 +160,14 @@
return mAppStoresMap.get(storeNumber);
}
- public boolean isAOSPVersionListEmpty()
+ public boolean isAOSPVersionListNotEmpty()
{
- return mAOSPVersionMap.isEmpty();
+ return !mAOSPVersionMap.isEmpty();
}
- public boolean isFairphoneVersionListEmpty()
+ public boolean isFairphoneVersionListNotEmpty()
{
- return mFairphoneVersionMap.isEmpty();
+ return !mFairphoneVersionMap.isEmpty();
}
public boolean isAppStoreListEmpty()
diff --git a/src/com/fairphone/updater/data/Version.java b/src/com/fairphone/updater/data/Version.java
index 2e4c31a..c3285a8 100644
--- a/src/com/fairphone/updater/data/Version.java
+++ b/src/com/fairphone/updater/data/Version.java
@@ -29,35 +29,35 @@
public class Version extends DownloadableItem implements Comparable<Version>
{
- public static final String FAIRPHONE_VERSION_NUMBER = "FairphoneUpdateVersionNumber";
+ private static final String FAIRPHONE_VERSION_NUMBER = "FairphoneUpdateVersionNumber";
- public static final String FAIRPHONE_VERSION_NAME = "FairphoneUpdateVersionName";
+ private static final String FAIRPHONE_VERSION_NAME = "FairphoneUpdateVersionName";
- public static final String FAIRPHONE_VERSION_BUILD_NUMBER = "FairphoneUpdateVersionBuildNumber";
+ private static final String FAIRPHONE_VERSION_BUILD_NUMBER = "FairphoneUpdateVersionBuildNumber";
- public static final String FAIRPHONE_ANDROID_VERSION = "FairphoneUpdateAndroidVersion";
+ private static final String FAIRPHONE_ANDROID_VERSION = "FairphoneUpdateAndroidVersion";
- public static final String FAIRPHONE_VERSION_OTA_DOWNLOAD_LINK = "FairphoneUpdateVersionOTADownloadLink";
+ private static final String FAIRPHONE_VERSION_OTA_DOWNLOAD_LINK = "FairphoneUpdateVersionOTADownloadLink";
- public static final String FAIRPHONE_VERSION_THUMBNAIL_DOWNLOAD_LINK = "FairphoneUpdateVersionThumbnailDownloadLink";
+ private static final String FAIRPHONE_VERSION_THUMBNAIL_DOWNLOAD_LINK = "FairphoneUpdateVersionThumbnailDownloadLink";
- public static final String FAIRPHONE_VERSION_OTA_MD5 = "FairphoneUpdateVersionOTAMD5";
+ private static final String FAIRPHONE_VERSION_OTA_MD5 = "FairphoneUpdateVersionOTAMD5";
public static final String IMAGE_TYPE_AOSP = "AOSP";
public static final String IMAGE_TYPE_FAIRPHONE = "FAIRPHONE";
- protected String mImageType;
+ private String mImageType;
- protected String mAndroidVersion;
+ private String mAndroidVersion;
- protected String mBetaStatus;
+ private String mBetaStatus;
- protected boolean mErasePartitionsWarning;
+ private boolean mErasePartitionsWarning;
public Version()
{
- mDependencies = new ArrayList<Integer>();
+ mDependencies = new ArrayList<>();
mNumber = 0;
mName = "";
@@ -106,7 +106,7 @@
return version;
}
- public void saveToSharedPreferences(Context context)
+ void saveToSharedPreferences(Context context)
{
SharedPreferences sharedPrefs = context.getSharedPreferences(FairphoneUpdater.FAIRPHONE_UPDATER_PREFERENCES, Context.MODE_PRIVATE);
@@ -180,7 +180,7 @@
return Version.getImageTypeDescription(mImageType, resources);
}
- public static String getImageTypeDescription(String imageType, Resources resources)
+ private static String getImageTypeDescription(String imageType, Resources resources)
{
String description = resources.getString(R.string.fairphone);
if (!TextUtils.isEmpty(imageType))
@@ -202,17 +202,13 @@
String retVal = "";
if (!TextUtils.isEmpty(mAndroidVersion))
{
- StringBuilder sb = new StringBuilder();
- sb.append(resources.getString(R.string.android));
- sb.append(" ");
- sb.append(mAndroidVersion);
- retVal = sb.toString();
+ retVal = resources.getString(R.string.android) + " " + mAndroidVersion;
}
return retVal;
}
-
+
@Override
- public int compareTo(Version another)
+ public int compareTo(@SuppressWarnings("NullableProblems") Version another)
{
int retVal;
if (another != null)
diff --git a/src/com/fairphone/updater/data/VersionParserHelper.java b/src/com/fairphone/updater/data/VersionParserHelper.java
index 6c12ac3..7d2b3c8 100644
--- a/src/com/fairphone/updater/data/VersionParserHelper.java
+++ b/src/com/fairphone/updater/data/VersionParserHelper.java
@@ -80,39 +80,37 @@
return version;
}
- public static String getSystemData(Context context, String property, boolean useDefaults)
+ private static String getSystemData(Context context, String property, boolean useDefaults)
{
+ String result;
+ switch (property) {
+ case CURRENT_VERSION_NUMBER:
+ result = Utils.getprop(CURRENT_VERSION_NUMBER, useDefaults ? String.valueOf(context.getResources().getInteger(R.integer.defaultVersionNumber)) : "");
+ break;
+ case CURRENT_VERSION_NAME:
+ result = Utils.getprop(CURRENT_VERSION_NAME, useDefaults ? context.getResources().getString(R.string.defaultVersionName) : "");
+ break;
+ case CURRENT_ANDROID_VERSION:
+ result = Utils.getprop(CURRENT_ANDROID_VERSION, useDefaults ? context.getResources().getString(R.string.defaultAndroidVersionNumber) : "");
+ break;
+ case CURRENT_VERSION_BUILD_NUMBER:
+ result = Utils.getprop(CURRENT_VERSION_BUILD_NUMBER, useDefaults ? context.getResources().getString(R.string.defaultBuildNumber) : "");
+ break;
+ case CURRENT_VERSION_IMAGE_TYPE:
+ result = Utils.getprop(CURRENT_VERSION_IMAGE_TYPE, useDefaults ? context.getResources().getString(R.string.defaultImageType) : "");
+ break;
+ case CURRENT_VERSION_BUILD_DATE:
+ result = Utils.getprop(CURRENT_VERSION_BUILD_DATE, useDefaults ? context.getResources().getString(R.string.defaultBuildDate) : "");
+ break;
+ case CURRENT_BETA_STATUS:
+ result = Utils.getprop(CURRENT_BETA_STATUS, useDefaults ? context.getResources().getString(R.string.defaultBetaStatus) : "0");
+ break;
+ default:
+ result = "";
+ break;
+ }
- if (property.equals(CURRENT_VERSION_NUMBER))
- {
- return Utils.getprop(CURRENT_VERSION_NUMBER, useDefaults ? String.valueOf(context.getResources().getInteger(R.integer.defaultVersionNumber)) : "");
- }
- else if (property.equals(CURRENT_VERSION_NAME))
- {
- return Utils.getprop(CURRENT_VERSION_NAME, useDefaults ? context.getResources().getString(R.string.defaultVersionName) : "");
- }
- else if (property.equals(CURRENT_ANDROID_VERSION))
- {
- return Utils.getprop(CURRENT_ANDROID_VERSION, useDefaults ? context.getResources().getString(R.string.defaultAndroidVersionNumber) : "");
- }
- else if (property.equals(CURRENT_VERSION_BUILD_NUMBER))
- {
- return Utils.getprop(CURRENT_VERSION_BUILD_NUMBER, useDefaults ? context.getResources().getString(R.string.defaultBuildNumber) : "");
- }
- else if (property.equals(CURRENT_VERSION_IMAGE_TYPE))
- {
- return Utils.getprop(CURRENT_VERSION_IMAGE_TYPE, useDefaults ? context.getResources().getString(R.string.defaultImageType) : "");
- }
- else if (property.equals(CURRENT_VERSION_BUILD_DATE))
- {
- return Utils.getprop(CURRENT_VERSION_BUILD_DATE, useDefaults ? context.getResources().getString(R.string.defaultBuildDate) : "");
- }
- else if (property.equals(CURRENT_BETA_STATUS))
- {
- return Utils.getprop(CURRENT_BETA_STATUS, useDefaults ? context.getResources().getString(R.string.defaultBetaStatus) : "0");
- }
-
- return null;
+ return result;
}
public static Version getLatestVersion(Context context)
@@ -153,7 +151,7 @@
public enum XML_TAGS
{
- RELEASES, AOSP, FAIRPHONE, VERSION, NAME, BUILD_NUMBER, ANDROID_VERSION, RELEASE_NOTES, RELEASE_DATE, MD5SUM, THUMBNAIL_LINK, UPDATE_LINK, ERASE_DATA_WARNING, DEPENDENCIES, STORES, STORE, SHOW_DISCLAIMER;
+ RELEASES, AOSP, FAIRPHONE, VERSION, NAME, BUILD_NUMBER, ANDROID_VERSION, RELEASE_NOTES, RELEASE_DATE, MD5SUM, THUMBNAIL_LINK, UPDATE_LINK, ERASE_DATA_WARNING, DEPENDENCIES, STORES, STORE, SHOW_DISCLAIMER
}
// @formatter:on
@@ -182,7 +180,7 @@
while (eventType != XmlPullParser.END_DOCUMENT)
{
- String tagName = null;
+ String tagName;
switch (eventType)
{
case XmlPullParser.START_DOCUMENT:
@@ -255,7 +253,7 @@
return update.getLatestVersion(getSystemData(context, CURRENT_VERSION_IMAGE_TYPE, true));
}
- public static Version readVersion(Version version, XmlPullParser xpp, String tagName) throws XmlPullParserException, IOException
+ private static Version readVersion(Version version, XmlPullParser xpp, String tagName) throws XmlPullParserException, IOException
{
if (version == null)
@@ -281,7 +279,7 @@
return version;
}
- public static Store readStore(Store store, XmlPullParser xpp, String tagName) throws XmlPullParserException, IOException
+ private static Store readStore(Store store, XmlPullParser xpp, String tagName) throws XmlPullParserException, IOException
{
if (store == null)
@@ -374,7 +372,7 @@
removeZipContents(context);
}
- public static void removeZipContents(Context context)
+ private static void removeZipContents(Context context)
{
Resources resources = context.getResources();
String filePath =
@@ -389,7 +387,10 @@
File file = new File(filePath);
if (file.exists())
{
- file.delete();
+ final boolean delete = file.delete();
+ if (!delete) {
+ Log.d(TAG, "Couldn't delete file: " + file.getAbsolutePath());
+ }
}
}
diff --git a/src/com/fairphone/updater/fragments/BaseFragment.java b/src/com/fairphone/updater/fragments/BaseFragment.java
index 90fb006..61f198c 100644
--- a/src/com/fairphone/updater/fragments/BaseFragment.java
+++ b/src/com/fairphone/updater/fragments/BaseFragment.java
@@ -9,8 +9,8 @@
public class BaseFragment extends Fragment
{
- protected FairphoneUpdater mainActivity;
- protected SharedPreferences mSharedPreferences;
+ FairphoneUpdater mainActivity;
+ SharedPreferences mSharedPreferences;
@Override
public void onAttach(Activity activity)
diff --git a/src/com/fairphone/updater/fragments/ConfirmationPopupDialog.java b/src/com/fairphone/updater/fragments/ConfirmationPopupDialog.java
index 2cf31ba..d58289d 100644
--- a/src/com/fairphone/updater/fragments/ConfirmationPopupDialog.java
+++ b/src/com/fairphone/updater/fragments/ConfirmationPopupDialog.java
@@ -1,5 +1,6 @@
package com.fairphone.updater.fragments;
+import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.KeyEvent;
@@ -19,6 +20,7 @@
import com.fairphone.updater.R;
import com.fairphone.updater.fragments.VersionDetailFragment.DetailLayoutType;
+@SuppressLint("ValidFragment")
public class ConfirmationPopupDialog extends DialogFragment implements OnEditorActionListener
{
public interface ConfirmationPopupDialogListener
@@ -26,15 +28,13 @@
void onFinishPopUpDialog(boolean result);
}
- private String mVersion;
- private ConfirmationPopupDialogListener mCallback;
- private DetailLayoutType mLayoutType;
+ private final String mVersion;
+ private final ConfirmationPopupDialogListener mCallback;
+ private final DetailLayoutType mLayoutType;
private Button mOkButton;
- private Button mCancelButton;
- private CheckBox mConfirmationCheckbox;
- private boolean mIsOSChange;
- private boolean mIsOlderVersion;
- private boolean mHasEraseAllDataWarning;
+ private final boolean mIsOSChange;
+ private final boolean mIsOlderVersion;
+ private final boolean mHasEraseAllDataWarning;
public ConfirmationPopupDialog(String version, boolean isOSChange, boolean isOlderVersion, boolean hasEraseAllDataWarning, DetailLayoutType layoutType,
ConfirmationPopupDialogListener callback)
@@ -54,8 +54,8 @@
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
- View view = null;
- TextView versionNameText = null;
+ View view;
+ TextView versionNameText;
switch (mLayoutType)
{
@@ -108,28 +108,24 @@
}
});
- mCancelButton = (Button) view.findViewById(R.id.confirmation_no_button);
+ Button mCancelButton = (Button) view.findViewById(R.id.confirmation_no_button);
- mCancelButton.setOnClickListener(new OnClickListener()
- {
+ mCancelButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v)
- {
- ConfirmationPopupDialog.this.dismiss();
- mCallback.onFinishPopUpDialog(false);
- }
+ @Override
+ public void onClick(View v) {
+ ConfirmationPopupDialog.this.dismiss();
+ mCallback.onFinishPopUpDialog(false);
+ }
});
- mConfirmationCheckbox = (CheckBox) view.findViewById(R.id.confirmation_checkbox);
- mConfirmationCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener()
- {
+ CheckBox mConfirmationCheckbox = (CheckBox) view.findViewById(R.id.confirmation_checkbox);
+ mConfirmationCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
- {
- mOkButton.setEnabled(isChecked);
- }
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ mOkButton.setEnabled(isChecked);
+ }
});
return view;
diff --git a/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java b/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
index 17a7cec..c899a56 100644
--- a/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
+++ b/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
@@ -4,6 +4,7 @@
import java.io.IOException;
import java.util.concurrent.TimeoutException;
+import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.DownloadManager;
import android.app.ProgressDialog;
@@ -12,7 +13,6 @@
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Resources;
import android.content.res.Resources.NotFoundException;
@@ -32,7 +32,6 @@
import android.widget.TextView;
import android.widget.Toast;
-import com.fairphone.updater.FairphoneUpdater;
import com.fairphone.updater.FairphoneUpdater.HeaderType;
import com.fairphone.updater.FairphoneUpdater.UpdaterState;
import com.fairphone.updater.R;
@@ -47,12 +46,13 @@
import com.stericson.RootTools.execution.CommandCapture;
import com.stericson.RootTools.execution.Shell;
+@SuppressLint("ValidFragment")
public class DownloadAndRestartFragment extends BaseFragment
{
private static final int PROGRESS_BAR_UPDATE_FREQUENCY_IN_MILLIS = 1000;
- protected static final String TAG = DownloadAndRestartFragment.class.getSimpleName();
+ private static final String TAG = DownloadAndRestartFragment.class.getSimpleName();
private TextView mDownloadVersionName;
private LinearLayout mVersionDownloadingGroup;
@@ -63,7 +63,7 @@
private Version mSelectedVersion;
private Store mSelectedStore;
- private boolean mIsVersion;
+ private final boolean mIsVersion;
private DownloadManager mDownloadManager;
@@ -84,7 +84,7 @@
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// Inflate the layout for this fragment
- View view = null;
+ View view;
if (mIsVersion)
{
mSelectedVersion = mainActivity.getSelectedVersion();
@@ -122,9 +122,8 @@
private View inflateStoreView(LayoutInflater inflater, ViewGroup container)
{
- View view = inflater.inflate(R.layout.fragment_download_app_store, container, false);
- return view;
+ return inflater.inflate(R.layout.fragment_download_app_store, container, false);
}
private void toggleDownloadProgressAndRestart()
@@ -512,7 +511,6 @@
if (Utils.checkMD5(item.getMd5Sum(), file))
{
copyUpdateToCache(file);
- return;
}
else
{
@@ -527,7 +525,7 @@
// DOWNLOAD UPDATE
// ************************************************************************************
- public void setupDownloadState()
+ void setupDownloadState()
{
DownloadableItem item = mIsVersion ? mSelectedVersion : mSelectedStore;
@@ -539,9 +537,12 @@
// we don't have the lastest.xml so get back to initial state
File updateDir = new File(Environment.getExternalStorageDirectory() + resources.getString(R.string.updaterFolder));
- updateDir.delete();
+ final boolean delete = updateDir.delete();
+ if(!delete) {
+ Log.d(TAG, "Unable to delete "+updateDir.getAbsolutePath());
+ }
- abortUpdateProcess();
+ abortUpdateProcess();
return;
}
@@ -594,27 +595,12 @@
Shell.runRootCommand(new CommandCapture(0, "echo '--update_package=/" + resources.getString(R.string.recoverySdCardPath)
+ resources.getString(R.string.updaterFolder) + Utils.getFilenameFromDownloadableItem(item) + "' >> /cache/recovery/command"));
}
- } catch (IOException e)
+ } catch (IOException | NotFoundException | TimeoutException | RootDeniedException e)
{
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (NotFoundException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (RootDeniedException e)
- {
- // TODO Auto-generated catch block
e.printStackTrace();
}
- SharedPreferences sharedPreferences = getActivity().getSharedPreferences(FairphoneUpdater.FAIRPHONE_UPDATER_PREFERENCES, Context.MODE_PRIVATE);
-
- Editor editor = sharedPreferences.edit();
+ Editor editor = mSharedPreferences.edit();
editor.remove(UpdaterService.PREFERENCE_REINSTALL_GAPPS);
editor.commit();
@@ -632,20 +618,13 @@
mainActivity.updateStatePreference(UpdaterState.NORMAL);
mainActivity.clearSelectedItems();
clearConfigFile();
- mSharedPreferences.edit().remove(UpdaterService.LAST_CONFIG_DOWNLOAD_IN_MS).commit();
- mSharedPreferences.edit().remove(MainFragment.SHARED_PREFERENCES_ENABLE_GAPPS).commit();
+ editor = mSharedPreferences.edit();
+ editor.remove(UpdaterService.LAST_CONFIG_DOWNLOAD_IN_MS);
+ editor.remove(MainFragment.SHARED_PREFERENCES_ENABLE_GAPPS);
+ editor.commit();
Shell.runRootCommand(new CommandCapture(0, "reboot recovery"));
- } catch (IOException e)
+ } catch (IOException | TimeoutException | RootDeniedException e)
{
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (RootDeniedException e)
- {
- // TODO Auto-generated catch block
e.printStackTrace();
}
}
@@ -662,7 +641,7 @@
{
mDownloadManager.remove(cfgFile);
}
- mainActivity.saveConfigFileDownloadId(0);
+ mainActivity.clearConfigFileDownloadId();
VersionParserHelper.removeConfigFiles(mainActivity);
}
@@ -706,19 +685,13 @@
R.string.removeGmailCommand), getResources().getString(R.string.removePlayServicesCommand), getResources().getString(
R.string.removeQuicksearchCommand), getResources().getString(R.string.removeTalkbackCommand), getResources().getString(
R.string.removeText2SpeechCommand)));
- } catch (IOException e)
- {
- e.printStackTrace();
- } catch (TimeoutException e)
- {
- e.printStackTrace();
- } catch (RootDeniedException e)
+ } catch (IOException | TimeoutException | RootDeniedException e)
{
e.printStackTrace();
}
}
- public boolean removeLastUpdateDownload()
+ void removeLastUpdateDownload()
{
long latestUpdateDownloadId = mainActivity.getLatestUpdateDownloadIdFromSharedPreference();
if (latestUpdateDownloadId != 0 && mDownloadManager != null)
@@ -728,7 +701,6 @@
mainActivity.resetLastUpdateDownloadId();
}
- return latestUpdateDownloadId != 0; // report if something was canceled
}
private class CopyFileToCacheTask extends AsyncTask<String, Integer, Integer>
diff --git a/src/com/fairphone/updater/fragments/InfoPopupDialog.java b/src/com/fairphone/updater/fragments/InfoPopupDialog.java
index 76e9d74..b23d9bb 100644
--- a/src/com/fairphone/updater/fragments/InfoPopupDialog.java
+++ b/src/com/fairphone/updater/fragments/InfoPopupDialog.java
@@ -1,5 +1,6 @@
package com.fairphone.updater.fragments;
+import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.KeyEvent;
@@ -16,12 +17,12 @@
import com.fairphone.updater.R;
import com.fairphone.updater.fragments.VersionDetailFragment.DetailLayoutType;
+@SuppressLint("ValidFragment")
public class InfoPopupDialog extends DialogFragment implements OnEditorActionListener
{
- private DetailLayoutType mLayoutType;
- private Button mOkButton;
+ private final DetailLayoutType mLayoutType;
- public InfoPopupDialog(DetailLayoutType layoutType)
+ public InfoPopupDialog(DetailLayoutType layoutType)
{
// Empty constructor required for DialogFragment
super();
@@ -33,7 +34,7 @@
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
- View view = null;
+ View view;
switch (mLayoutType)
{
@@ -48,15 +49,13 @@
break;
}
- mOkButton = (Button) view.findViewById(R.id.confirmation_yes_button);
+ Button mOkButton = (Button) view.findViewById(R.id.confirmation_yes_button);
- mOkButton.setOnClickListener(new OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- InfoPopupDialog.this.dismiss();
- }
+ mOkButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ InfoPopupDialog.this.dismiss();
+ }
});
return view;
diff --git a/src/com/fairphone/updater/fragments/MainFragment.java b/src/com/fairphone/updater/fragments/MainFragment.java
index 58a339b..70c36d0 100644
--- a/src/com/fairphone/updater/fragments/MainFragment.java
+++ b/src/com/fairphone/updater/fragments/MainFragment.java
@@ -30,7 +30,7 @@
public class MainFragment extends BaseFragment
{
- public static String SHARED_PREFERENCES_ENABLE_GAPPS = "SHARED_PREFERENCES_ENABLE_GAPPS_POPUP";
+ public static final String SHARED_PREFERENCES_ENABLE_GAPPS = "SHARED_PREFERENCES_ENABLE_GAPPS_POPUP";
private LinearLayout mVersionUpToDateGroup;
private TextView mVersionUpToDateCurrentVersionNameText;
@@ -42,9 +42,8 @@
private Button mOtherOSOptionsButton;
private Version mDeviceVersion;
private BroadcastReceiver newVersionbroadcastReceiver;
- private LinearLayout mCurrentVersionGroup;
- private RelativeLayout mGappsIcon;
+ private RelativeLayout mGappsIcon;
private Button mGappsButton;
private Button mGappsDismissButton;
@@ -103,36 +102,35 @@
return showGappsGroup && gappsNotInstalled && hasStoreInfo;
}
- protected Store getSelectedStoreFromSharedPreferences()
+ Store getSelectedStoreFromSharedPreferences()
{
return UpdaterData.getInstance().getStore(mSharedPreferences.getInt(FairphoneUpdater.PREFERENCE_SELECTED_STORE_NUMBER, 0));
}
- private void setGappsInstalationButtonState(boolean enableGapps)
+ private void disableGappsInstalationButton()
{
Editor edit = mSharedPreferences.edit();
- edit.putBoolean(SHARED_PREFERENCES_ENABLE_GAPPS, enableGapps);
+ edit.putBoolean(SHARED_PREFERENCES_ENABLE_GAPPS, false);
edit.commit();
}
private void setupCurrentVersionGroup(LayoutInflater inflater, View view)
{
- mCurrentVersionGroup = (LinearLayout) view.findViewById(R.id.current_version_group);
+ LinearLayout mCurrentVersionGroup = (LinearLayout) view.findViewById(R.id.current_version_group);
View updateGroupView = null;
if (Version.IMAGE_TYPE_FAIRPHONE.equalsIgnoreCase(mainActivity.getDeviceVersion().getImageType()))
{
- updateGroupView = inflater.inflate(R.layout.fragment_main_update_available_fairphone, null);
+ updateGroupView = inflater.inflate(R.layout.fragment_main_update_available_fairphone, mCurrentVersionGroup);
}
else if (Version.IMAGE_TYPE_AOSP.equalsIgnoreCase(mainActivity.getDeviceVersion().getImageType()))
{
- updateGroupView = inflater.inflate(R.layout.fragment_main_update_available_android, null);
+ updateGroupView = inflater.inflate(R.layout.fragment_main_update_available_android, mCurrentVersionGroup);
}
if (updateGroupView != null)
{
updateGroupView.setLayoutParams(mCurrentVersionGroup.getLayoutParams());
- mCurrentVersionGroup.addView(updateGroupView);
}
}
@@ -159,7 +157,7 @@
public void onClick(View v)
{
mGappsIcon.setVisibility(View.GONE);
- setGappsInstalationButtonState(false);
+ disableGappsInstalationButton();
}
});
}
@@ -177,7 +175,7 @@
private void updateOtherOSOptionsGroup()
{
- if (!UpdaterData.getInstance().isFairphoneVersionListEmpty() || !UpdaterData.getInstance().isAOSPVersionListEmpty())
+ if (UpdaterData.getInstance().isFairphoneVersionListNotEmpty() || UpdaterData.getInstance().isAOSPVersionListNotEmpty())
{
mOtherOSOptionsGroup.setVisibility(View.VISIBLE);
mOtherOSOptionsButton.setOnClickListener(new OnClickListener()
@@ -197,7 +195,7 @@
}
}
- public void toogleUpdateAvailableGroup()
+ void toogleUpdateAvailableGroup()
{
updateCurrentVersionGroup();
@@ -312,7 +310,7 @@
unregisterBroadCastReceiver();
}
- protected void setupBroadcastReceiver()
+ void setupBroadcastReceiver()
{
newVersionbroadcastReceiver = new BroadcastReceiver()
{
diff --git a/src/com/fairphone/updater/fragments/OtherOSOptionsFragment.java b/src/com/fairphone/updater/fragments/OtherOSOptionsFragment.java
index e344c5d..068930f 100644
--- a/src/com/fairphone/updater/fragments/OtherOSOptionsFragment.java
+++ b/src/com/fairphone/updater/fragments/OtherOSOptionsFragment.java
@@ -70,7 +70,7 @@
private void setupAndroidVersionsButton()
{
- if (!UpdaterData.getInstance().isAOSPVersionListEmpty())
+ if (UpdaterData.getInstance().isAOSPVersionListNotEmpty())
{
androidOSButton.setVisibility(View.VISIBLE);
androidOSButton.setOnClickListener(new OnClickListener()
@@ -93,7 +93,7 @@
private void setupOlderFairphoneVersionsButton()
{
- if (!UpdaterData.getInstance().isFairphoneVersionListEmpty())
+ if (UpdaterData.getInstance().isFairphoneVersionListNotEmpty())
{
olderFairphoneOSButton.setVisibility(View.VISIBLE);
olderFairphoneOSButton.setOnClickListener(new OnClickListener()
diff --git a/src/com/fairphone/updater/fragments/VersionDetailFragment.java b/src/com/fairphone/updater/fragments/VersionDetailFragment.java
index 93e7e51..a77606d 100644
--- a/src/com/fairphone/updater/fragments/VersionDetailFragment.java
+++ b/src/com/fairphone/updater/fragments/VersionDetailFragment.java
@@ -1,9 +1,6 @@
package com.fairphone.updater.fragments;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Locale;
-
+import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.DownloadManager;
import android.app.DownloadManager.Request;
@@ -26,7 +23,6 @@
import com.fairphone.updater.FairphoneUpdater.HeaderType;
import com.fairphone.updater.FairphoneUpdater.UpdaterState;
-import com.fairphone.updater.FairphoneUpdater;
import com.fairphone.updater.R;
import com.fairphone.updater.data.DownloadableItem;
import com.fairphone.updater.data.Store;
@@ -34,6 +30,12 @@
import com.fairphone.updater.fragments.ConfirmationPopupDialog.ConfirmationPopupDialogListener;
import com.fairphone.updater.tools.Utils;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Locale;
+
+@SuppressLint("ValidFragment")
public class VersionDetailFragment extends BaseFragment
{
@@ -57,7 +59,7 @@
private boolean mIsOSChange;
private boolean mIsOlderVersion;
private Store mSelectedStore;
- private boolean mIsVersion;
+ private final boolean mIsVersion;
public VersionDetailFragment(boolean isVersion)
{
@@ -79,7 +81,7 @@
private View setLayoutType(LayoutInflater inflater, ViewGroup container)
{
- View view = null;
+ View view;
switch (mDetailLayoutType)
{
case UPDATE_ANDROID:
@@ -168,11 +170,11 @@
mSelectedStore = null;
}
- public void setupFragment(Store selectedStore, DetailLayoutType detailType)
+ public void setupAppStoreFragment(Store selectedStore)
{
mSelectedStore = selectedStore;
- mDetailLayoutType = detailType;
+ mDetailLayoutType = DetailLayoutType.APP_STORE;
mSelectedVersion = null;
}
@@ -184,7 +186,7 @@
if (mIsVersion && mSelectedVersion != null)
{
- mHeaderType = mainActivity.getHeaderTypeFromImageType(mSelectedVersion != null ? mSelectedVersion.getImageType() : "");
+ mHeaderType = mainActivity.getHeaderTypeFromImageType(mSelectedVersion.getImageType());
}
else if (mSelectedStore != null)
{
@@ -234,9 +236,7 @@
ConnectivityManager manager = (ConnectivityManager) mainActivity.getSystemService(Context.CONNECTIVITY_SERVICE);
- boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
-
- return isWifi;
+ return manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
}
private Request createDownloadRequest(String url, String fileName, String downloadTitle)
@@ -247,9 +247,13 @@
try
{
request = new Request(Uri.parse(url));
- Environment.getExternalStoragePublicDirectory(Environment.getExternalStorageDirectory() + resources.getString(R.string.updaterFolder)).mkdirs();
+ final File externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory(Environment.getExternalStorageDirectory() + resources.getString(R.string.updaterFolder));
+ final boolean mkdirs = externalStoragePublicDirectory.mkdirs();
+ if(!mkdirs && !externalStoragePublicDirectory.exists()) {
+ throw new Exception("Couldn't create updater dir structures.");
+ }
- request.setDestinationInExternalPublicDir(resources.getString(R.string.updaterFolder), fileName);
+ request.setDestinationInExternalPublicDir(resources.getString(R.string.updaterFolder), fileName);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
request.setAllowedOverRoaming(false);
@@ -262,7 +266,7 @@
return request;
}
- public void startUpdateDownload()
+ void startUpdateDownload()
{
DownloadableItem item = mIsVersion ? mSelectedVersion : mSelectedStore;
// use only on WiFi
@@ -305,7 +309,8 @@
mainActivity.saveLatestUpdateDownloadId(mLatestUpdateDownloadId);
// change state to download
- mainActivity.changeState(UpdaterState.DOWNLOAD);
+ mainActivity.updateStatePreference(UpdaterState.DOWNLOAD);
+ mainActivity.changeFragment(mainActivity.getFragmentFromState());
}
else
{
@@ -357,7 +362,7 @@
popupDialog.show(fm, version);
}
- public void startDownload()
+ void startDownload()
{
if (mIsVersion && mSelectedVersion != null)
{
@@ -431,7 +436,7 @@
}
}
- protected void showStoreDisclaimer()
+ void showStoreDisclaimer()
{
final UpdaterState currentState = mainActivity.getCurrentUpdaterState();
diff --git a/src/com/fairphone/updater/fragments/VersionListFragment.java b/src/com/fairphone/updater/fragments/VersionListFragment.java
index c6ee0a8..8905c78 100644
--- a/src/com/fairphone/updater/fragments/VersionListFragment.java
+++ b/src/com/fairphone/updater/fragments/VersionListFragment.java
@@ -31,8 +31,7 @@
private ListLayoutType mListLayoutType;
private List<Version> mVersionList;
- private List<Store> mStoreList;
- private LinearLayout mVersionListContainer;
+ private LinearLayout mVersionListContainer;
private Button mLatestVersionDetailsButton;
private TextView mLatestVersionInstalledIndicator;
private LinearLayout mOlderVersionsGroup;
@@ -41,15 +40,14 @@
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// Inflate the layout for this fragment
- View view = setupLayout(inflater, container);
- return view;
+ return setupLayout(inflater, container);
}
private View setupLayout(LayoutInflater inflater, ViewGroup container)
{
- View view = null;
+ View view;
Resources resources = mainActivity.getResources();
switch (mListLayoutType)
{
@@ -60,7 +58,6 @@
mOlderVersionsGroup = (LinearLayout) view.findViewById(R.id.older_versions_group);
mVersionListContainer = (LinearLayout) view.findViewById(R.id.version_list_container);
- setupAppStoresLatestVersion();
setupAppStoreVersions(container);
break;
case ANDROID:
@@ -99,7 +96,7 @@
Button storeLayout;
LayoutInflater inflater = getActivity().getLayoutInflater();
- mStoreList = UpdaterData.getInstance().getAppStoreList();
+ List<Store> mStoreList = UpdaterData.getInstance().getAppStoreList();
for (Store store : mStoreList)
{
@@ -122,7 +119,7 @@
{
VersionDetailFragment versionDetail = new VersionDetailFragment(false);
- versionDetail.setupFragment(selectedStore, DetailLayoutType.APP_STORE);
+ versionDetail.setupAppStoreFragment(selectedStore);
mainActivity.changeFragment(versionDetail);
}
@@ -140,18 +137,6 @@
}
}
- private void setupAppStoresLatestVersion()
- {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onDetach()
- {
- super.onDetach();
- }
-
private void setupFairphoneVersions(ViewGroup root)
{
Button versionLayout;
diff --git a/src/com/fairphone/updater/gappsinstaller/GappsInstallerHelper.java b/src/com/fairphone/updater/gappsinstaller/GappsInstallerHelper.java
index 04ad88a..e84267f 100644
--- a/src/com/fairphone/updater/gappsinstaller/GappsInstallerHelper.java
+++ b/src/com/fairphone/updater/gappsinstaller/GappsInstallerHelper.java
@@ -15,8 +15,6 @@
*/
package com.fairphone.updater.gappsinstaller;
-import java.io.File;
-
import android.appwidget.AppWidgetManager;
import android.content.ComponentName;
import android.content.Context;
@@ -24,6 +22,8 @@
import com.fairphone.updater.widgets.gapps.GoogleAppsInstallerWidget;
+import java.io.File;
+
public class GappsInstallerHelper
{
protected static final String TAG = GappsInstallerHelper.class.getSimpleName();
@@ -34,10 +34,10 @@
public static final int GAPPS_STATES_INITIAL = 0;
public static final int GAPPS_INSTALLED_STATE = 1;
- public static String EXTRA_START_GAPPS_INSTALL = "com.fairphone.updater.gapps.EXTRA_START_GAPPS_INSTALL";
+ public static final String EXTRA_START_GAPPS_INSTALL = "com.fairphone.updater.gapps.EXTRA_START_GAPPS_INSTALL";
- private Context mContext;
- private SharedPreferences mSharedPrefs;
+ private final Context mContext;
+ private final SharedPreferences mSharedPrefs;
public GappsInstallerHelper(Context context)
{
@@ -55,17 +55,16 @@
return f.exists();
}
- private boolean checkGappsAreInstalled()
+ private void checkGappsAreInstalled()
{
if (areGappsInstalled())
{
updateWidgetState(GAPPS_INSTALLED_STATE);
- return true;
+ return;
}
updateWidgetState(GAPPS_STATES_INITIAL);
- return false;
}
private void updateGoogleAppsIntallerWidgets()
@@ -86,7 +85,7 @@
prefEdit.commit();
}
- public void updateWidgetState(int state)
+ void updateWidgetState(int state)
{
updateInstallerState(state);
diff --git a/src/com/fairphone/updater/tools/Cleaner.java b/src/com/fairphone/updater/tools/Cleaner.java
deleted file mode 100644
index 891c0a6..0000000
--- a/src/com/fairphone/updater/tools/Cleaner.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.fairphone.updater.tools;
-
-import java.io.File;
-
-import android.content.Context;
-
-import com.fairphone.updater.R;
-
-public class Cleaner
-{
- public static void deleteFile(String file, String location)
- {
- File f = new File(location + file);
-
- if (f.exists())
- {
- deleteRecursive(f);
- }
- }
-
- public static void deleteRecursive(File fileOrDirectory)
- {
- if (fileOrDirectory.isDirectory())
- {
- for (File child : fileOrDirectory.listFiles())
- {
- deleteRecursive(child);
- }
- }
-
- fileOrDirectory.delete();
- }
-
- public static void createDirPath(String dir, String location)
- {
- File f = new File(location + dir);
-
- if (!f.isDirectory())
- {
- f.mkdirs();
- }
- }
-}
diff --git a/src/com/fairphone/updater/tools/RSAUtils.java b/src/com/fairphone/updater/tools/RSAUtils.java
index a87011d..670341c 100644
--- a/src/com/fairphone/updater/tools/RSAUtils.java
+++ b/src/com/fairphone/updater/tools/RSAUtils.java
@@ -49,7 +49,7 @@
private static final String TAG = RSAUtils.class.getSimpleName();
- public static final String SIGNATURE_ALGORITHM = "SHA1withRSA";
+ private static final String SIGNATURE_ALGORITHM = "SHA1withRSA";
public static PublicKey readPublicKeyFormCertificate(Context context, int certificateResourceId) throws IOException, CertificateException
{
@@ -74,21 +74,21 @@
return pubKey;
}
- public static PublicKey readPublicKeyFromPemFormat(Context context, int publicKeyId) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException
+ private static PublicKey readPublicKeyFromPemFormat(Context context) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException
{
- InputStream in = context.getResources().openRawResource(publicKeyId);
+ InputStream in = context.getResources().openRawResource(R.raw.public_key);
BufferedReader pemReader = new BufferedReader(new InputStreamReader(in));
- StringBuffer content = new StringBuffer();
- String line = null;
+ StringBuilder content = new StringBuilder();
+ String line;
while ((line = pemReader.readLine()) != null)
{
- if (line.indexOf("-----BEGIN PUBLIC KEY-----") != -1)
+ if (line.contains("-----BEGIN PUBLIC KEY-----"))
{
while ((line = pemReader.readLine()) != null)
{
- if (line.indexOf("-----END PUBLIC KEY") != -1)
+ if (line.contains("-----END PUBLIC KEY"))
{
break;
}
@@ -107,7 +107,7 @@
return keyFactory.generatePublic(new X509EncodedKeySpec(Base64.decode(content.toString(), Base64.DEFAULT)));
}
- public static byte[] readSignature(String input) throws IOException
+ private static byte[] readSignature(String input) throws IOException
{
FileInputStream signStream = new FileInputStream(input);
byte[] signBytes = new byte[signStream.available()];
@@ -116,9 +116,9 @@
return signBytes;
}
- public static boolean verifySignature(String input, String algorithm, byte[] sign, PublicKey pubKey) throws Exception
+ private static boolean verifySignature(String input, byte[] sign, PublicKey pubKey) throws Exception
{
- Signature sg = Signature.getInstance(algorithm);
+ Signature sg = Signature.getInstance(RSAUtils.SIGNATURE_ALGORITHM);
sg.initVerify(pubKey);
Log.i(TAG, "Signature Object Info: ");
Log.i(TAG, "Algorithm = " + sg.getAlgorithm());
@@ -149,21 +149,12 @@
String fileXmlExt = resources.getString(R.string.config_xml);
String fileSigExt = resources.getString(R.string.config_sig);
- PublicKey pubKey = RSAUtils.readPublicKeyFromPemFormat(context, R.raw.public_key);
+ PublicKey pubKey = RSAUtils.readPublicKeyFromPemFormat(context);
byte[] sign = RSAUtils.readSignature(targetPath + filename + fileSigExt);
- valid = RSAUtils.verifySignature(targetPath + filename + fileXmlExt, RSAUtils.SIGNATURE_ALGORITHM, sign, pubKey);
- } catch (CertificateException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ valid = RSAUtils.verifySignature(targetPath + filename + fileXmlExt, sign, pubKey);
} catch (Exception e)
{
- // TODO Auto-generated catch block
- e.printStackTrace();
+ Log.d(TAG, "File signature verification failed: "+ e.getLocalizedMessage());
}
return valid;
}
@@ -175,7 +166,7 @@
{
FileInputStream fin = new FileInputStream(filePath);
ZipInputStream zin = new ZipInputStream(fin);
- ZipEntry ze = null;
+ ZipEntry ze;
while ((ze = zin.getNextEntry()) != null)
{
@@ -190,7 +181,7 @@
FileOutputStream fout = new FileOutputStream(targetPath + ze.getName());
byte buffer[] = new byte[2048];
- int count = 0;
+ int count;
while ((count = zin.read(buffer)) != -1)
{
diff --git a/src/com/fairphone/updater/tools/Utils.java b/src/com/fairphone/updater/tools/Utils.java
index 6995806..fcfc53e 100644
--- a/src/com/fairphone/updater/tools/Utils.java
+++ b/src/com/fairphone/updater/tools/Utils.java
@@ -16,18 +16,6 @@
package com.fairphone.updater.tools;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.math.BigInteger;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.NoSuchElementException;
-import java.util.Scanner;
-import java.util.concurrent.TimeoutException;
-
import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.Context;
@@ -49,15 +37,27 @@
import com.stericson.RootTools.execution.CommandCapture;
import com.stericson.RootTools.execution.Shell;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.NoSuchElementException;
+import java.util.Scanner;
+import java.util.concurrent.TimeoutException;
+
public class Utils
{
private static final String TAG = Utils.class.getSimpleName();
- public static double getPartitionSizeInGBytes(File path)
+ private static double getPartitionSizeInGBytes(File path)
{
double availableBlocks = getPartitionSizeInBytes(path);
- double sizeInGB = (((double) availableBlocks / 1024d) / 1024d) / 1024d;
+ double sizeInGB = ((availableBlocks / 1024d) / 1024d) / 1024d;
Log.d(TAG, path.getPath() + " size(GB): " + sizeInGB);
return sizeInGB;
}
@@ -65,25 +65,44 @@
public static double getPartitionSizeInMBytes(File path)
{
double availableBlocks = getPartitionSizeInBytes(path);
- double sizeInMB = (((double) availableBlocks / 1024d)) / 1024d;
+ double sizeInMB = ((availableBlocks / 1024d)) / 1024d;
Log.d(TAG, path.getPath() + " size(MB): " + sizeInMB);
return sizeInMB;
}
- public static long getPartitionSizeInBytes(File path)
+ private static long getPartitionSizeInBytes(File path)
{
android.os.StatFs stat = new android.os.StatFs(path.getPath());
- long blockSize = stat.getBlockSize();
- long availableBlocks = stat.getBlockCount() * blockSize;
- return availableBlocks;
+ long blockSize, blockCount;
+ if (Build.VERSION.SDK_INT >= 18) {
+ blockSize = stat.getBlockSizeLong();
+ blockCount = stat.getBlockCountLong();
+ } else {
+ // deprectation warnings disabled due to the need to support SDK 17 (FP1)
+ //noinspection deprecation
+ blockSize = stat.getBlockSize();
+ //noinspection deprecation
+ blockCount = stat.getBlockCount();
+ }
+ return blockCount * blockSize;
}
public static long getAvailablePartitionSizeInBytes(File path)
{
android.os.StatFs stat = new android.os.StatFs(path.getPath());
- long blockSize = stat.getBlockSize();
- long availableBlocks = stat.getAvailableBlocks() * blockSize;
- return availableBlocks;
+
+ long blockSize, blockCount;
+ if (Build.VERSION.SDK_INT >= 18) {
+ blockSize = stat.getBlockSizeLong();
+ blockCount = stat.getAvailableBlocksLong();
+ } else {
+ // deprectation warnings disabled due to the need to support SDK 17 (FP1)
+ //noinspection deprecation
+ blockSize = stat.getBlockSize();
+ //noinspection deprecation
+ blockCount = stat.getAvailableBlocks();
+ }
+ return blockCount * blockSize;
}
public static void startUpdaterService(Context context, boolean forceDownload)
@@ -110,7 +129,7 @@
}
}
- public static boolean isServiceRunning(Context context)
+ private static boolean isServiceRunning(Context context)
{
boolean isRunning = false;
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
@@ -145,7 +164,7 @@
}
}
- public static void downloadConfigFile(Context context) {
+ private static void downloadConfigFile(Context context) {
downloadConfigFile(context, false);
}
@@ -163,12 +182,12 @@
public static boolean checkMD5(String md5, File updateFile)
{
- if (!updateFile.exists())
+ if (updateFile == null || !updateFile.exists())
{
return false;
}
- if (md5 == null || md5.equals("") || updateFile == null)
+ if (md5 == null || md5.equals("") )
{
Log.e(TAG, "MD5 String NULL or UpdateFile NULL");
return false;
@@ -184,7 +203,7 @@
return calculatedDigest.equalsIgnoreCase(md5);
}
- public static String calculateMD5(File updateFile)
+ private static String calculateMD5(File updateFile)
{
MessageDigest digest;
try
@@ -243,13 +262,13 @@
// attach the model and the os
sb.append("?");
- sb.append("model=" + Build.MODEL.replaceAll("\\s", ""));
+ sb.append("model=").append(Build.MODEL.replaceAll("\\s", ""));
Version currentVersion = VersionParserHelper.getDeviceVersion(context);
if (currentVersion != null)
{
sb.append("&");
- sb.append("os=" + currentVersion.getAndroidVersion());
+ sb.append("os=").append(currentVersion.getAndroidVersion());
}
return sb.toString();
@@ -262,16 +281,18 @@
if (files != null)
{
Log.d(TAG, "Size: " + files.length);
- for (int i = 0; i < files.length; i++)
- {
- String filename = files[i].getName();
+ for (File file : files) {
+ String filename = file.getName();
- if (filename.endsWith(".zip"))
- {
- files[i].delete();
- Log.d(TAG, "Deleted file " + filename);
- }
- }
+ if (filename.endsWith(".zip")) {
+ final boolean delete = file.delete();
+ if (delete) {
+ Log.d(TAG, "Deleted file " + filename);
+ } else {
+ Log.d(TAG, "Failed to delete file " + filename);
+ }
+ }
+ }
}
}
@@ -279,7 +300,7 @@
{
File path = Environment.getDataDirectory();
double sizeInGB = Utils.getPartitionSizeInGBytes(path);
- double roundedSize = (double) Math.ceil(sizeInGB * 100d) / 100d;
+ double roundedSize = Math.ceil(sizeInGB * 100d) / 100d;
Log.d(TAG, "/data size: " + roundedSize + "Gb");
double fp1DataPartitionSize = (double) resources.getInteger(R.integer.FP1DataPartitionSizeMb) / 100d;
@@ -343,10 +364,10 @@
return title;
}
- public static boolean isDeviceSupported(Context context)
+ public static boolean isDeviceUnsupported(Context context)
{
Version deviceVersion = VersionParserHelper.getDeviceVersion(context);
- return deviceVersion != null && !TextUtils.isEmpty(deviceVersion.getName());
+ return deviceVersion == null || TextUtils.isEmpty(deviceVersion.getName());
}
public static String getprop(String name, String defaultValue)
@@ -354,7 +375,7 @@
ProcessBuilder pb = new ProcessBuilder("/system/bin/getprop", name);
pb.redirectErrorStream(true);
- Process p = null;
+ Process p;
InputStream is = null;
try
{
@@ -383,24 +404,21 @@
is.close();
} catch (Exception e)
{
+ Log.d(TAG, "Unexpected issue: "+e.getLocalizedMessage() );
}
}
}
return defaultValue;
}
- public static void setprop(Context context, String key, String value)
+ public static void setprop(String key, String value)
{
if(RootTools.isAccessGiven()) {
CommandCapture command = new CommandCapture(0, "setprop "+key+" "+value);
try {
Shell.runRootCommand(command);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (TimeoutException e) {
- e.printStackTrace();
- } catch (RootDeniedException e) {
- e.printStackTrace();
+ } catch (IOException | TimeoutException | RootDeniedException e) {
+ Log.d(TAG, "Failed to setprop: " + e.getLocalizedMessage());
}
}
}
diff --git a/src/com/fairphone/updater/widgets/gapps/GoogleAppsInstallerWidget.java b/src/com/fairphone/updater/widgets/gapps/GoogleAppsInstallerWidget.java
index e7b3ccc..dceb490 100644
--- a/src/com/fairphone/updater/widgets/gapps/GoogleAppsInstallerWidget.java
+++ b/src/com/fairphone/updater/widgets/gapps/GoogleAppsInstallerWidget.java
@@ -35,20 +35,6 @@
private static final String TAG = GoogleAppsInstallerWidget.class.getSimpleName();
@Override
- public void onEnabled(Context context)
- {
- super.onEnabled(context);
- }
-
- @Override
- public void onDisabled(Context context)
- {
- // Called once the last instance of your widget is removed from the
- // homescreen
- super.onDisabled(context);
- }
-
- @Override
public void onDeleted(Context context, int[] appWidgetIds)
{
// Widget instance is removed from the homescreen