diff --git a/build.gradle b/build.gradle index cafc1dcf1f..69a1ce4613 100644 --- a/build.gradle +++ b/build.gradle @@ -34,8 +34,8 @@ android { applicationId "com.amaze.filemanager" minSdkVersion 14 targetSdkVersion 25 - versionCode 56 - versionName "3.1.2 RC2" + versionCode 57 + versionName "3.1.2 RC3" } signingConfigs { diff --git a/src/fdroid/java/com/amaze/filemanager/activities/MainActivity.java b/src/fdroid/java/com/amaze/filemanager/activities/MainActivity.java index 8cd200634f..1a0e8b453b 100644 --- a/src/fdroid/java/com/amaze/filemanager/activities/MainActivity.java +++ b/src/fdroid/java/com/amaze/filemanager/activities/MainActivity.java @@ -2580,7 +2580,7 @@ public void onNewIntent(Intent i) { if (failedOps != null) { mainActivityHelper.showFailedOperationDialog(failedOps, i.getBooleanExtra("move", false), this); } - } else if (intent.getCategories().contains(CLOUD_AUTHENTICATOR_GDRIVE)) { + } else if (i.getCategories() != null && i.getCategories().contains(CLOUD_AUTHENTICATOR_GDRIVE)) { // we used an external authenticator instead of APIs. Probably for Google Drive CloudRail.setAuthenticationResponse(intent); diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index e245124181..dc52914aac 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -22,8 +22,8 @@ + android:versionCode="57" + android:versionName="3.1.2 RC3"> diff --git a/src/main/java/com/amaze/filemanager/fragments/preference_fragments/Preffrag.java b/src/main/java/com/amaze/filemanager/fragments/preference_fragments/Preffrag.java index 121b1f0a46..7aa2ab4c51 100644 --- a/src/main/java/com/amaze/filemanager/fragments/preference_fragments/Preffrag.java +++ b/src/main/java/com/amaze/filemanager/fragments/preference_fragments/Preffrag.java @@ -204,48 +204,61 @@ public boolean onPreferenceClick(Preference preference) { masterPasswordPreference.setEnabled(false); } - // finger print sensor - final FingerprintManager fingerprintManager = (FingerprintManager) - getActivity().getSystemService(Context.FINGERPRINT_SERVICE); - final KeyguardManager keyguardManager = (KeyguardManager) - getActivity().getSystemService(Context.KEYGUARD_SERVICE); - CheckBox checkBx = (CheckBox) findPreference(PREFERENCE_CRYPT_FINGERPRINT); + CheckBox checkBoxFingerprint = (CheckBox) findPreference(PREFERENCE_CRYPT_FINGERPRINT); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && fingerprintManager.isHardwareDetected()) { + try { - checkBx.setEnabled(true); - } + // finger print sensor + final FingerprintManager fingerprintManager = (FingerprintManager) + getActivity().getSystemService(Context.FINGERPRINT_SERVICE); - checkBx.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + final KeyguardManager keyguardManager = (KeyguardManager) + getActivity().getSystemService(Context.KEYGUARD_SERVICE); - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - - if (ActivityCompat.checkSelfPermission(getActivity(), - Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) { - Toast.makeText(getActivity(), - getResources().getString(R.string.crypt_fingerprint_no_permission), - Toast.LENGTH_LONG).show(); - return false; - } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && - !fingerprintManager.hasEnrolledFingerprints()) { - Toast.makeText(getActivity(), - getResources().getString(R.string.crypt_fingerprint_not_enrolled), - Toast.LENGTH_LONG).show(); - return false; - } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && - !keyguardManager.isKeyguardSecure()) { - Toast.makeText(getActivity(), - getResources().getString(R.string.crypt_fingerprint_no_security), - Toast.LENGTH_LONG).show(); - return false; - } - masterPasswordPreference.setEnabled(false); - return true; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && fingerprintManager.isHardwareDetected()) { + + checkBoxFingerprint.setEnabled(true); } - }); + + checkBoxFingerprint.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + + if (ActivityCompat.checkSelfPermission(getActivity(), + Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) { + Toast.makeText(getActivity(), + getResources().getString(R.string.crypt_fingerprint_no_permission), + Toast.LENGTH_LONG).show(); + return false; + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && + !fingerprintManager.hasEnrolledFingerprints()) { + Toast.makeText(getActivity(), + getResources().getString(R.string.crypt_fingerprint_not_enrolled), + Toast.LENGTH_LONG).show(); + return false; + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && + !keyguardManager.isKeyguardSecure()) { + Toast.makeText(getActivity(), + getResources().getString(R.string.crypt_fingerprint_no_security), + Toast.LENGTH_LONG).show(); + return false; + } + + masterPasswordPreference.setEnabled(false); + return true; + } + }); + } catch (NoClassDefFoundError error) { + error.printStackTrace(); + + // fingerprint manager class not defined in the framework + checkBoxFingerprint.setEnabled(false); + } + + } public static void restartPC(final Activity activity) { diff --git a/src/main/java/com/amaze/filemanager/ui/icons/IconHolder.java b/src/main/java/com/amaze/filemanager/ui/icons/IconHolder.java index 22dd5caadc..ef1a0c89ff 100644 --- a/src/main/java/com/amaze/filemanager/ui/icons/IconHolder.java +++ b/src/main/java/com/amaze/filemanager/ui/icons/IconHolder.java @@ -29,6 +29,7 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.media.ThumbnailUtils; +import android.os.Build; import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; @@ -104,10 +105,19 @@ private synchronized void processResult(LoadResult result) { for (Map.Entry entry : mRequests.entrySet()) { final ImageView imageView = entry.getKey(); final String fso = entry.getValue(); - if (Objects.equals(fso, result.fso)) { - imageView.setImageBitmap(result.result); - mRequests.remove(imageView); - break; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + if (Objects.equals(fso, result.fso)) { + imageView.setImageBitmap(result.result); + mRequests.remove(imageView); + break; + } + } else { + if (fso.equals(result.fso)) { + + imageView.setImageBitmap(result.result); + mRequests.remove(imageView); + break; + } } } } diff --git a/src/main/res/values/translators.xml b/src/main/res/values/translators.xml index f6144a5b1b..16c15acb04 100644 --- a/src/main/res/values/translators.xml +++ b/src/main/res/values/translators.xml @@ -42,7 +42,7 @@ ngoisaosang Naofumi Fukue Kuralarasi for StarsSoft - v3.1.2 RC2 + v3.1.2 RC3 Arpit Khurana Vishal Nehra GitHub diff --git a/src/play/java/com/amaze/filemanager/activities/MainActivity.java b/src/play/java/com/amaze/filemanager/activities/MainActivity.java index 8521fe4750..bacfb4ae41 100644 --- a/src/play/java/com/amaze/filemanager/activities/MainActivity.java +++ b/src/play/java/com/amaze/filemanager/activities/MainActivity.java @@ -331,6 +331,7 @@ public void onCreate(Bundle savedInstanceState) { mainActivityHelper = new MainActivityHelper(this); initialiseFab(); + // TODO: Create proper SQLite database handler class with calls to database from background thread history = new HistoryManager(this, "Table2"); history.initializeTable(DataUtils.HISTORY, 0); history.initializeTable(DataUtils.HIDDEN, 0); @@ -2719,10 +2720,11 @@ public void onNewIntent(Intent i) { if (failedOps != null) { mainActivityHelper.showFailedOperationDialog(failedOps, i.getBooleanExtra("move", false), this); } - } else if (intent.getCategories().contains(CLOUD_AUTHENTICATOR_GDRIVE)) { + } else if (i.getCategories() != null && i.getCategories().contains(CLOUD_AUTHENTICATOR_GDRIVE)) { // we used an external authenticator instead of APIs. Probably for Google Drive CloudRail.setAuthenticationResponse(intent); + } else if ((openProcesses = i.getBooleanExtra(KEY_INTENT_PROCESS_VIEWER, false))) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.content_frame, new ProcessViewer(), KEY_INTENT_PROCESS_VIEWER);