ErrorReporter, AboutFragment: Use correct market URI for Huawei AppGallery installs.

This commit is contained in:
Andreas Schildbach 2021-02-09 12:07:40 +01:00
parent fbaa8f3bb8
commit 4590b4f29c
4 changed files with 30 additions and 7 deletions

View file

@ -30,7 +30,6 @@ public class Constants {
public static final String PLAN_INDEX_FILENAME = "plans-index.txt";
public static final String PLAN_STATIONS_FILENAME = "plans-stations.txt";
public static final String MARKET_APP_URL = "market://details?id=%s";
public static final String BITCOIN_ADDRESS = "bc1q8ruc8hanp7hrzfs48dvtuzz4ukmpe7cgsvvzrt";
public static final String REPORT_EMAIL = "oeffi.app@gmail.com";

View file

@ -20,12 +20,14 @@ package de.schildbach.oeffi.preference;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import androidx.annotation.Nullable;
import de.schildbach.oeffi.Application;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.util.Installer;
public class AboutFragment extends PreferenceFragment {
private static final String KEY_ABOUT_VERSION = "about_version";
@ -48,11 +50,23 @@ public class AboutFragment extends PreferenceFragment {
addPreferencesFromResource(R.xml.preference_about);
findPreference(KEY_ABOUT_VERSION).setSummary(application.packageInfo().versionName);
final Uri marketUri = Uri.parse(String.format(Constants.MARKET_APP_URL, application.getPackageName()));
findPreference(KEY_ABOUT_MARKET_APP).setSummary(marketUri.toString());
findPreference(KEY_ABOUT_MARKET_APP).setIntent(new Intent(Intent.ACTION_VIEW, marketUri));
final Installer installer = Installer.from(application);
if (installer != null) {
final Uri marketUri = installer.appMarketUriFor(application);
findPreference(KEY_ABOUT_MARKET_APP).setSummary(marketUri.toString());
findPreference(KEY_ABOUT_MARKET_APP).setIntent(new Intent(Intent.ACTION_VIEW, marketUri));
} else {
removeOrDisablePreference(findPreference(KEY_ABOUT_MARKET_APP));
}
final Uri changelogUri = Uri.parse(activity.getString(R.string.about_changelog_summary));
findPreference(KEY_ABOUT_CHANGELOG).setSummary(changelogUri.toString());
findPreference(KEY_ABOUT_CHANGELOG).setIntent(new Intent(Intent.ACTION_VIEW, changelogUri));
}
private void removeOrDisablePreference(final Preference preference) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
preference.getParent().removePreference(preference);
else
preference.setEnabled(false);
}
}

View file

@ -366,8 +366,7 @@ public class ErrorReporter implements Thread.UncaughtExceptionHandler {
if (installer != null) {
builder.setNeutralButton(installer.displayName, (dialog, which) -> {
stackTraceFile.delete();
context.startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("market://details?id=" + context.getPackageName())));
context.startActivity(new Intent(Intent.ACTION_VIEW, installer.appMarketUriFor(context)));
});
}
builder.setPositiveButton(R.string.alert_crash_report_download, (dialog, which) -> {

View file

@ -20,6 +20,7 @@ package de.schildbach.oeffi.util;
import android.app.Application;
import android.content.Context;
import android.content.pm.PackageManager;
import android.net.Uri;
import okhttp3.HttpUrl;
public enum Installer {
@ -74,4 +75,14 @@ public enum Installer {
}
return url.build();
}
public Uri appMarketUriFor(final Context context) {
final Uri.Builder uri;
if (this == HUAWEI_APP_GALLERY)
uri = Uri.parse("appmarket://details").buildUpon();
else
uri = Uri.parse("market://details").buildUpon();
uri.appendQueryParameter("id", context.getPackageName());
return uri.build();
}
}