show trust id activity button only if available

This commit is contained in:
Vincent Breitmoser 2017-03-04 12:47:14 +01:00
parent 3bf7fd54b0
commit 3015a68a72
3 changed files with 31 additions and 11 deletions

View file

@ -19,6 +19,7 @@ package org.sufficientlysecure.keychain.ui.adapter;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.content.ActivityNotFoundException;
@ -26,6 +27,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
import android.net.Uri;
@ -74,26 +76,43 @@ public class TrustIdsAdapter extends CursorAdapter {
Drawable drawable = getDrawableForPackageName(packageName);
vTrustId.setText(trustId);
vAppIcon.setImageDrawable(drawable);
vActionIcon.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
launchTrustIdActivity(packageName, trustId, context);
}
});
if (isTrustIdActivityAvailable(packageName, trustId, context)) {
vActionIcon.setVisibility(View.VISIBLE);
vActionIcon.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
launchTrustIdActivity(packageName, trustId, context);
}
});
} else {
vActionIcon.setVisibility(View.GONE);
}
}
private void launchTrustIdActivity(String packageName, String trustId, Context context) {
try {
Intent intent = new Intent();
intent.setAction(packageName + ".TRUST_ID_ACTION");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(OpenPgpApi.EXTRA_TRUST_IDENTITY, trustId);
Intent intent = createTrustIdActivityIntent(packageName, trustId);
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
// can't help it
}
}
private Intent createTrustIdActivityIntent(String packageName, String trustId) {
Intent intent = new Intent();
intent.setAction(packageName + ".TRUST_ID_ACTION");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(OpenPgpApi.EXTRA_TRUST_IDENTITY, trustId);
return intent;
}
private boolean isTrustIdActivityAvailable(String packageName, String trustId, Context context) {
Intent intent = createTrustIdActivityIntent(packageName, trustId);
List<ResolveInfo> resolveInfos = context.getPackageManager().queryIntentActivities(intent, 0);
return resolveInfos != null && !resolveInfos.isEmpty();
}
private Drawable getDrawableForPackageName(String packageName) {
if (appIconCache.containsKey(packageName)) {
return appIconCache.get(packageName);

View file

@ -2,7 +2,6 @@
<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="wrap_content"
android:minHeight="?attr/listPreferredItemHeight"

View file

@ -35,6 +35,8 @@
android:id="@+id/trust_id_action"
android:background="?selectableItemBackground"
android:src="@drawable/ic_chat_black_24dp"
android:visibility="gone"
tools:visibility="visible"
/>
</LinearLayout>