Description for error API #49

This commit is contained in:
J-Jamet
2018-03-24 20:06:27 +01:00
parent 8e390685cd
commit efc786e318
4 changed files with 71 additions and 14 deletions

View File

@@ -1,15 +1,22 @@
package com.keepassdroid.dialogs;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
import android.text.Html;
import android.text.SpannableStringBuilder;
import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import com.kunzisoft.keepass.R;
import java.lang.reflect.Field;
public class UnavailableFeatureDialogFragment extends DialogFragment {
private static final String MIN_REQUIRED_VERSION_ARG = "MIN_REQUIRED_VERSION_ARG";
@@ -29,20 +36,55 @@ public class UnavailableFeatureDialogFragment extends DialogFragment {
if (getArguments() != null && getArguments().containsKey(MIN_REQUIRED_VERSION_ARG))
minVersionRequired = getArguments().getInt(MIN_REQUIRED_VERSION_ARG);
assert getActivity() != null;
LayoutInflater inflater = getActivity().getLayoutInflater();
View rootView = inflater.inflate(R.layout.unavailable_feature, null);
TextView messageView = rootView.findViewById(R.id.unavailable_feature_message);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
String message = getString(R.string.unavailable_feature_text).concat("\n");
if(Build.VERSION.SDK_INT < minVersionRequired)
message = message.concat(getString(R.string.unavailable_feature_version,
Build.VERSION.SDK_INT,
minVersionRequired));
else
message = message.concat(getString(R.string.unavailable_feature_hardware));
SpannableStringBuilder message = new SpannableStringBuilder();
message.append(getString(R.string.unavailable_feature_text))
.append("\n");
if(Build.VERSION.SDK_INT < minVersionRequired) {
message.append(getString(R.string.unavailable_feature_version,
androidNameFromApiNumber(Build.VERSION.SDK_INT),
androidNameFromApiNumber(minVersionRequired)));
message.append("\n\n")
.append(Html.fromHtml("<a href=\"https://source.android.com/setup/build-numbers\">CodeNames</a>"));
} else
message.append(getString(R.string.unavailable_feature_hardware));
builder.setMessage(message)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) { }
});
messageView.setText(message);
messageView.setMovementMethod(LinkMovementMethod.getInstance());
builder.setView(rootView)
.setPositiveButton(android.R.string.ok, (dialog, id) -> { });
return builder.create();
}
private String androidNameFromApiNumber(int apiNumber) {
StringBuilder builder = new StringBuilder();
Field[] fields = Build.VERSION_CODES.class.getFields();
for (Field field : fields) {
String fieldName = field.getName();
int fieldValue = -1;
try {
fieldValue = field.getInt(new Object());
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}
if (fieldValue == apiNumber) {
builder.append(fieldName).append(" ");
break;
}
}
builder.append("(API ");
builder.append(apiNumber).append(")");
return builder.toString();
}
}

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="20dp"
android:paddingLeft="20dp"
android:paddingStart="20dp"
android:paddingRight="20dp"
android:paddingEnd="20dp"
android:paddingBottom="0dp" >
<TextView android:id="@+id/unavailable_feature_message"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

View File

@@ -225,7 +225,7 @@
<string name="fingerprint_delete_all_summary">Supprimer toutes les clés de chiffrement liées à la reconnaissance des empreintes digitales</string>
<string name="fingerprint_delete_all_warning">Êtes-vous sûr de vouloir supprimer toutes les clés liées aux empreintes digitales?</string>
<string name="unavailable_feature_text">Impossible de démarrer cette fonctionnalité.</string>
<string name="unavailable_feature_version">Votre version Android %1$d n\'est pas la version minimale %2$d requise.</string>
<string name="unavailable_feature_version">Votre version Android %1$s n\'est pas la version minimale %2$s requise.</string>
<string name="unavailable_feature_hardware">Le matériel n\'est pas détecté.</string>
<string name="file_name">Nom de fichier</string>
<string name="path">Chemin</string>

View File

@@ -226,7 +226,7 @@
<string name="fingerprint_delete_all_summary">Delete all encryption keys related to fingerprint recognition</string>
<string name="fingerprint_delete_all_warning">Are you sure you want to delete all the keys related to fingerprints?</string>
<string name="unavailable_feature_text">Can not start this feature.</string>
<string name="unavailable_feature_version">Your Android version %1$d is not the minimum version %2$d required.</string>
<string name="unavailable_feature_version">Your Android version %1$s is not the minimum version %2$s required.</string>
<string name="unavailable_feature_hardware">The hardware is not detected.</string>
<string name="file_name">File name</string>
<string name="path">Path</string>