Check link verify status

This commit is contained in:
tehcneko committed 2022-01-24 13:53:58 +08:00
1 parent 5ada2e12c2
commit c40ba85e50
6 files changed
+90

No files matched your search

@@ -19,6 +19,9 @@ package com.hippo.ehviewer.ui;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.verify.domain.DomainVerificationManager;
import android.content.pm.verify.domain.DomainVerificationUserState;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
@@ -38,6 +41,7 @@ import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatDelegate;
@@ -91,6 +95,7 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Map;
import rikka.material.app.DayNightDelegate;
@@ -347,6 +352,15 @@ public final class MainActivity extends StageActivity
if (Settings.getMeteredNetworkWarning()) {
checkMeteredNetwork();
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
if (!Settings.getAppLinkVerifyTip()) {
try {
checkAppLinkVerify();
} catch (PackageManager.NameNotFoundException ignored) {
}
}
}
} else {
onRestore(savedInstanceState);
}
@@ -354,6 +368,41 @@ public final class MainActivity extends StageActivity
EhTagDatabase.update(this);
}
@RequiresApi(api = Build.VERSION_CODES.S)
private void checkAppLinkVerify() throws PackageManager.NameNotFoundException {
DomainVerificationManager manager = getSystemService(DomainVerificationManager.class);
DomainVerificationUserState userState = manager.getDomainVerificationUserState(getPackageName());
if (userState == null) {
return;
}
boolean hasUnverified = false;
Map<String, Integer> hostToStateMap = userState.getHostToStateMap();
for (String key : hostToStateMap.keySet()) {
Integer stateValue = hostToStateMap.get(key);
if (stateValue == null || stateValue == DomainVerificationUserState.DOMAIN_STATE_VERIFIED || stateValue == DomainVerificationUserState.DOMAIN_STATE_SELECTED) {
continue;
}
hasUnverified = true;
break;
}
if (hasUnverified) {
new AlertDialog.Builder(this)
.setTitle(R.string.app_link_not_verified_title)
.setMessage(R.string.app_link_not_verified_message)
.setPositiveButton(R.string.open_settings, (dialogInterface, i) -> {
Intent intent = new Intent(android.provider.Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS,
Uri.parse("package:" + getPackageName()));
startActivity(intent);
})
.setNegativeButton(android.R.string.cancel, null)
.setNeutralButton(R.string.dont_show_again, (dialogInterface, i) -> Settings.putAppLinkVerifyTip(true))
.show();
}
}
private void checkDownloadLocation() {
UniFile uniFile = Settings.getDownloadLocation();
// null == uniFile for first start