WebxdcStore.java

  1package com.cheogram.android;
  2
  3// Based on code from https://codeberg.org/monocles/monocles_chat/raw/commit/master/src/main/java/de/monocles/chat/WebXDCStore.java
  4
  5import static android.view.View.VISIBLE;
  6import static eu.siacs.conversations.ui.ActionBarActivity.configureActionBar;
  7import static eu.siacs.conversations.utils.AccountUtils.MANAGE_ACCOUNT_ACTIVITY;
  8
  9import android.app.Activity;
 10import android.content.Context;
 11import android.content.Intent;
 12import android.content.IntentFilter;
 13import android.content.SharedPreferences;
 14import android.net.ConnectivityManager;
 15import android.net.NetworkInfo;
 16import android.net.Uri;
 17import android.os.Build;
 18import android.os.Bundle;
 19import android.os.Environment;
 20import android.text.Html;
 21import android.text.method.LinkMovementMethod;
 22import android.view.MenuItem;
 23import android.webkit.DownloadListener;
 24import android.webkit.URLUtil;
 25import android.webkit.WebSettings;
 26import android.webkit.WebView;
 27import android.webkit.WebViewClient;
 28
 29import eu.siacs.conversations.R;
 30import eu.siacs.conversations.services.ChannelDiscoveryService;
 31import eu.siacs.conversations.ui.Activities;
 32import eu.siacs.conversations.ui.XmppActivity;
 33import eu.siacs.conversations.databinding.ActivityWebxdcStoreBinding;
 34
 35import androidx.annotation.NonNull;
 36import androidx.appcompat.app.ActionBar;
 37import androidx.appcompat.app.AlertDialog;
 38import androidx.databinding.DataBindingUtil;
 39
 40import android.annotation.SuppressLint;
 41import android.widget.TextView;
 42import android.widget.Toast;
 43
 44public class WebxdcStore extends XmppActivity {
 45    @SuppressLint("SetJavaScriptEnabled")
 46    @Override
 47    protected void onCreate(Bundle savedInstanceState) {
 48        super.onCreate(savedInstanceState);
 49        final ActivityWebxdcStoreBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_webxdc_store);
 50        Activities.setStatusAndNavigationBarColors(this, binding.getRoot());
 51        setSupportActionBar(binding.toolbar);
 52        configureActionBar(getSupportActionBar());
 53
 54        //getSupportActionBar().setDisplayShowHomeEnabled(false);
 55        //getSupportActionBar().setDisplayHomeAsUpEnabled(false);
 56        WebView webView = findViewById(R.id.web);
 57        String URL = "https://webxdc.org/apps/";
 58        if (isNetworkAvailable(this)) {
 59            webView.loadUrl(URL);
 60            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
 61                webView.setForceDarkAllowed(true);
 62            }
 63            webView.getSettings().setJavaScriptEnabled(true);
 64            webView.getSettings().setDomStorageEnabled(true);
 65            webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
 66            webView.setWebViewClient(new WebViewClient() {
 67                @Override
 68                public boolean shouldOverrideUrlLoading(WebView view, String url) {
 69                    view.loadUrl(url);
 70                    return true;
 71                }
 72            });
 73            webView.setDownloadListener(new DownloadListener() {
 74                @Override
 75                public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) {
 76                    final var intent = new Intent();
 77                    intent.setData(Uri.parse(url));
 78                    setResult(Activity.RESULT_OK, intent);
 79                    finish();
 80                }
 81            });
 82        } else {
 83            Toast.makeText(this, R.string.account_status_no_internet, Toast.LENGTH_LONG).show();
 84        }
 85    }
 86
 87    @Override
 88    protected void refreshUiReal() {
 89
 90    }
 91
 92    @Override
 93    protected void onBackendConnected() {
 94    }
 95
 96    //check for internet connection
 97    private boolean isNetworkAvailable(Context context) {
 98        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
 99        if (connectivity != null) {
100            NetworkInfo[] info = connectivity.getAllNetworkInfo();
101            if (info != null) {
102                for (NetworkInfo anInfo : info) {
103                    if (anInfo.getState() == NetworkInfo.State.CONNECTED) {
104                        return true;
105                    }
106                }
107            }
108        }
109        return false;
110    }
111}