use of com.ichi2.anki.dialogs.AsyncDialogFragment in project AnkiChinaAndroid by ankichinateam.
the class AnkiActivity method showDatabaseErrorDialog.
public void showDatabaseErrorDialog(int id) {
AsyncDialogFragment newFragment = DatabaseErrorDialog.newInstance(id);
showAsyncDialogFragment(newFragment);
}
use of com.ichi2.anki.dialogs.AsyncDialogFragment in project Anki-Android by ankidroid.
the class AnkiActivity method showSimpleMessageDialog.
/**
* Show a simple message dialog, dismissing the message without taking any further action when OK button is pressed.
* If a DialogFragment cannot be shown due to the Activity being stopped then the message is shown in the
* notification bar instead.
*
* @param message
* @param reload flag which forces app to be restarted when true
*/
public void showSimpleMessageDialog(String message, boolean reload) {
AsyncDialogFragment newFragment = SimpleMessageDialog.newInstance(message, reload);
showAsyncDialogFragment(newFragment);
}
use of com.ichi2.anki.dialogs.AsyncDialogFragment in project Anki-Android by ankidroid.
the class DeckPicker method showSyncErrorDialog.
/**
* Show a specific sync error dialog
* @param id id of dialog to show
* @param message text to show
*/
@Override
public void showSyncErrorDialog(int id, String message) {
AsyncDialogFragment newFragment = SyncErrorDialog.newInstance(id, message);
showAsyncDialogFragment(newFragment, NotificationChannels.Channel.SYNC);
}
use of com.ichi2.anki.dialogs.AsyncDialogFragment in project AnkiChinaAndroid by ankichinateam.
the class WebViewActivity method onCreate.
@SuppressLint({ "AddJavascriptInterface", "SetJavaScriptEnabled" })
@Override
@SuppressWarnings("deprecation")
protected void onCreate(Bundle savedInstanceState) {
Themes.setThemeLegacy(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.web_view);
Toolbar toolbar = findViewById(R.id.toolbar);
if (toolbar != null) {
// toolbar.inflateMenu(R.menu.web_view);
setSupportActionBar(toolbar);
}
getSupportActionBar().setTitle(getIntent().getStringExtra("url"));
// Add a home button to the actionbar
// getSupportActionBar().setHomeButtonEnabled(true);
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
webView = findViewById(R.id.web_view);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
// webView.getSettings().setAppCacheMaxSize(1024*1024*8);
webView.getSettings().setUserAgentString("User-Agent:Android");
// 可以读取文件缓存
webView.getSettings().setAllowFileAccess(true);
// 开启H5(APPCache)缓存功能
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
webView.getSettings().setAppCachePath(appCachePath);
// webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
webView.setDownloadListener((url, userAgent, contentDisposition, mimeType, contentLength) -> {
String fileName = URLUtil.guessFileName(url, contentDisposition, mimeType);
Request request = new Request.Builder().url(url).build();
// 构建我们的进度监听器
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath(), fileName);
final ProgressResponseBody.ProgressListener listener = (bytesRead, contentLength1, done) -> {
// 计算百分比并更新ProgressBar
if (contentLength1 != 0) {
final int percent = (int) (100 * bytesRead / contentLength1);
mProgressDialog.setProgress(percent);
}
if (done) {
runOnUiThread(() -> {
mProgressDialog.dismiss();
// fixme 下载的如果不是卡牌,需要执行通用程序
AsyncDialogFragment newFragment = ImportDialog.newInstance(DIALOG_IMPORT_ADD_CONFIRM, file.getAbsolutePath(), WebViewActivity.this);
showAsyncDialogFragment(newFragment);
});
}
};
OkHttpClient client = new OkHttpClient.Builder().addNetworkInterceptor(chain -> {
Response response = chain.proceed(chain.request());
return response.newBuilder().body(new ProgressResponseBody(response.body(), listener)).build();
}).build();
// 发送响应
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) {
Timber.i("onResponse:" + response.isSuccessful());
writeFile(file, response);
}
});
mProgressDialog = new MaterialDialog.Builder(WebViewActivity.this).title("正在下载").content("请不要做任何操作,保持屏幕常亮,切换页面或APP会导致下载中断!").progress(false, 100, false).cancelable(false).negativeText("取消下载").onNegative((dialog, which) -> {
call.cancel();
dialog.dismiss();
}).show();
});
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
writeData(getIntent().getStringExtra("token"));
WebViewActivity.this.getSupportActionBar().setTitle(title);
}
});
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
writeData(getIntent().getStringExtra("token"));
}
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Timber.i("shouldOverrideUrlLoading:%s", url);
if (url.startsWith("openexternalbrowser://url=")) {
// startThirdpartyApp("https://www.baidu.com");
openUrl(Uri.parse(url.replace("openexternalbrowser://url=", "")));
} else if (urlCanLoad(url.toLowerCase())) {
// 加载正常网页
view.loadUrl(url, map);
} else {
// 打开第三方应用或者下载apk等
startThirdpartyApp(url);
}
return true;
}
});
webView.setOnKeyListener((v, keyCode, event) -> {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
// 按返回键操作并且能回退网页
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
// 后退
webView.goBack();
return true;
}
}
// showShareDialog();
return false;
});
webView.addJavascriptInterface(new JavaScriptFunction(), "AnkiDroidJS");
map.put("Referer", "https://file.ankichinas.cn");
webView.loadUrl(getIntent().getStringExtra("url"), map);
}
use of com.ichi2.anki.dialogs.AsyncDialogFragment in project AnkiChinaAndroid by ankichinateam.
the class MyAccount method preLogin.
// void onTokenExpired() {
// AsyncDialogFragment newFragment = SyncErrorDialog.newInstance(SyncErrorDialog.DIALOG_USER_NOT_LOGGED_IN_SYNC, "");
// showAsyncDialogFragment(newFragment, NotificationChannels.Channel.SYNC);
// }
private void preLogin() {
// Hide soft keyboard
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(mPhoneNum.getWindowToken(), 0);
// trim spaces, issue 1586
String phone = mPhoneNum.getText().toString().trim();
String authCode = mAuthCode.getText().toString();
if (PhoneFormatCheckUtils.isChinaPhoneLegal(phone) && !"".equalsIgnoreCase(authCode) && authCode.length() == 6) {
try {
org.json.JSONObject jo = new org.json.JSONObject();
jo.put("phone", phone);
jo.put("code", authCode);
jo.put("key", getAuthKey());
Consts.saveAndUpdateLoginServer(Consts.LOGIN_SERVER_ANKICHINA);
Connection.sendCommonPost(preLoginListener, new Connection.Payload("authorizations", jo.toString(), Payload.REST_TYPE_POST, HostNumFactory.getInstance(this)));
} catch (Exception e) {
UIUtils.showSimpleSnackbar(this, R.string.invalid_account, true);
}
} else {
UIUtils.showSimpleSnackbar(this, R.string.invalid_phone, true);
}
}
Aggregations