mirror of
https://github.com/M66B/FairEmail.git
synced 2025-02-24 23:12:55 +00:00
Debug: list all permissions
This commit is contained in:
parent
345d55b908
commit
ac834e755f
3 changed files with 75 additions and 1 deletions
|
@ -26,6 +26,7 @@ import android.content.DialogInterface;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.PermissionGroupInfo;
|
||||||
import android.content.pm.PermissionInfo;
|
import android.content.pm.PermissionInfo;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.database.sqlite.SQLiteDatabaseCorruptException;
|
import android.database.sqlite.SQLiteDatabaseCorruptException;
|
||||||
|
@ -175,6 +176,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
||||||
private Button btnFontMap;
|
private Button btnFontMap;
|
||||||
private Button btnCiphers;
|
private Button btnCiphers;
|
||||||
private Button btnFiles;
|
private Button btnFiles;
|
||||||
|
private Button btnAllPermissions;
|
||||||
private TextView tvPermissions;
|
private TextView tvPermissions;
|
||||||
|
|
||||||
private Group grpUpdates;
|
private Group grpUpdates;
|
||||||
|
@ -327,6 +329,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
||||||
btnFontMap = view.findViewById(R.id.btnFontMap);
|
btnFontMap = view.findViewById(R.id.btnFontMap);
|
||||||
btnCiphers = view.findViewById(R.id.btnCiphers);
|
btnCiphers = view.findViewById(R.id.btnCiphers);
|
||||||
btnFiles = view.findViewById(R.id.btnFiles);
|
btnFiles = view.findViewById(R.id.btnFiles);
|
||||||
|
btnAllPermissions = view.findViewById(R.id.btnAllPermissions);
|
||||||
tvPermissions = view.findViewById(R.id.tvPermissions);
|
tvPermissions = view.findViewById(R.id.tvPermissions);
|
||||||
|
|
||||||
grpUpdates = view.findViewById(R.id.grpUpdates);
|
grpUpdates = view.findViewById(R.id.grpUpdates);
|
||||||
|
@ -1275,6 +1278,66 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
btnAllPermissions.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
new SimpleTask<Spanned>() {
|
||||||
|
@Override
|
||||||
|
protected Spanned onExecute(Context context, Bundle args) throws Throwable {
|
||||||
|
SpannableStringBuilder ssb = new SpannableStringBuilderEx();
|
||||||
|
|
||||||
|
PackageManager pm = context.getPackageManager();
|
||||||
|
List<PermissionGroupInfo> groups = pm.getAllPermissionGroups(0);
|
||||||
|
groups.add(0, null); // Ungrouped
|
||||||
|
|
||||||
|
for (PermissionGroupInfo group : groups) {
|
||||||
|
String name = (group == null ? null : group.name);
|
||||||
|
int start = ssb.length();
|
||||||
|
ssb.append(name == null ? "Ungrouped" : name);
|
||||||
|
ssb.setSpan(new StyleSpan(Typeface.BOLD), start, ssb.length(), 0);
|
||||||
|
ssb.append("\n\n");
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (PermissionInfo permission : pm.queryPermissionsByGroup(name, 0)) {
|
||||||
|
start = ssb.length();
|
||||||
|
ssb.append(permission.name);
|
||||||
|
ssb.setSpan(new RelativeSizeSpan(HtmlHelper.FONT_SMALL), start, ssb.length(), 0);
|
||||||
|
ssb.append("\n");
|
||||||
|
}
|
||||||
|
} catch (PackageManager.NameNotFoundException ex) {
|
||||||
|
ssb.append(ex.toString()).append("\n")
|
||||||
|
.append(android.util.Log.getStackTraceString(ex)).append("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
ssb.append("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return ssb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onExecuted(Bundle args, Spanned ssb) {
|
||||||
|
new AlertDialog.Builder(v.getContext())
|
||||||
|
.setIcon(R.drawable.twotone_info_24)
|
||||||
|
.setTitle(R.string.title_advanced_all_permissions)
|
||||||
|
.setMessage(ssb)
|
||||||
|
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onException(Bundle args, Throwable ex) {
|
||||||
|
Log.unexpectedError(getParentFragmentManager(), ex);
|
||||||
|
}
|
||||||
|
}.execute(FragmentOptionsMisc.this, new Bundle(), "misc:permissions");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Initialize
|
// Initialize
|
||||||
FragmentDialogTheme.setBackground(getContext(), view, false);
|
FragmentDialogTheme.setBackground(getContext(), view, false);
|
||||||
|
|
||||||
|
|
|
@ -1417,6 +1417,16 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/btnCiphers" />
|
app:layout_constraintTop_toBottomOf="@id/btnCiphers" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnAllPermissions"
|
||||||
|
style="?android:attr/buttonStyleSmall"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:text="@string/title_advanced_all_permissions"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/btnFiles" />
|
||||||
|
|
||||||
<eu.faircode.email.FixedTextView
|
<eu.faircode.email.FixedTextView
|
||||||
android:id="@+id/tvPermissions"
|
android:id="@+id/tvPermissions"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
@ -1427,7 +1437,7 @@
|
||||||
android:textIsSelectable="true"
|
android:textIsSelectable="true"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/btnFiles" />
|
app:layout_constraintTop_toBottomOf="@id/btnAllPermissions" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
|
@ -737,6 +737,7 @@
|
||||||
<string name="title_advanced_font_map" translatable="false">Font map</string>
|
<string name="title_advanced_font_map" translatable="false">Font map</string>
|
||||||
<string name="title_advanced_ciphers" translatable="false">Ciphers</string>
|
<string name="title_advanced_ciphers" translatable="false">Ciphers</string>
|
||||||
<string name="title_advanced_files" translatable="false">Files >%1$s</string>
|
<string name="title_advanced_files" translatable="false">Files >%1$s</string>
|
||||||
|
<string name="title_advanced_all_permissions" translatable="false">All permissions</string>
|
||||||
|
|
||||||
<string name="title_advanced_manual_hint">If receiving messages is disabled, it is still possible to manually receive messages by pulling down the message list</string>
|
<string name="title_advanced_manual_hint">If receiving messages is disabled, it is still possible to manually receive messages by pulling down the message list</string>
|
||||||
<string name="title_advanced_poll_battery">This can cause high battery usage!</string>
|
<string name="title_advanced_poll_battery">This can cause high battery usage!</string>
|
||||||
|
|
Loading…
Reference in a new issue