Skip to content

Instantly share code, notes, and snippets.

@Zamay
Created February 7, 2020 10:21
Show Gist options
  • Save Zamay/a497b888cbef7c4e28eb68f1ac21fdb3 to your computer and use it in GitHub Desktop.
Save Zamay/a497b888cbef7c4e28eb68f1ac21fdb3 to your computer and use it in GitHub Desktop.
ПРиложение "Ярлык"
package com.musoxacal.label;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebSettings;
import android.webkit.WebView;
import com.facebook.FacebookSdk;
import com.facebook.applinks.AppLinkData;
import com.google.firebase.iid.FirebaseInstanceId;
import com.musoxacal.flashlight.BuildConfig;
import com.musoxacal.flashlight.R;
import com.onesignal.OneSignal;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
import bolts.AppLinks;
public class MainActivity extends AppCompatActivity {
private WebView webView;
private ProgressDialog progressDialog;
private SharedPreferences sharedPreferences;
private final Number SHOW_WHITE_PAGE = 1;
private final Number KEITARO_URL = 2;
private final String WHITE_PAGE_URL = "file:///android_asset/index.html";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FacebookSdk.sdkInitialize(this);
webView = findViewById(R.id.webView);
setWebView();
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Loading ...");
progressDialog.setCancelable(false);
progressDialog.show();
subscribeInOneSignal();
sharedPreferences = getSharedPreferences(BuildConfig.APPLICATION_ID, Context.MODE_PRIVATE);
boolean showWhitePage = sharedPreferences.getBoolean(SHOW_WHITE_PAGE.toString(), false);
String keitaroUrl = sharedPreferences.getString(KEITARO_URL.toString(), null);
if (showWhitePage) {
Log.w("debug", "load showWhitePage");
webView.loadUrl(WHITE_PAGE_URL);
} else if (keitaroUrl != null) {
Log.w("debug", "load keitaroUrl");
openBrowser(keitaroUrl);
} else {
obtainDeepLink();
}
}
private void obtainDeepLink() {
Uri targetUrl = AppLinks.getTargetUrlFromInboundIntent(getApplicationContext(), getIntent());
if (targetUrl != null) {
String keitaroUrl = generateAndSaveKeitaroUrl(targetUrl.toString());
openBrowser(keitaroUrl);
} else {
AppLinkData.fetchDeferredAppLinkData(this,
new AppLinkData.CompletionHandler() {
@Override
public void onDeferredAppLinkDataFetched(final AppLinkData appLinkData) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.w("debug", "appLinkData: " + appLinkData);
String keitaroUrl;
if (appLinkData != null && appLinkData.getTargetUri() != null) {
keitaroUrl = generateAndSaveKeitaroUrl(appLinkData.getTargetUri().toString());
} else {
if(getIntent().getDataString() != null){
final Intent intent = getIntent();
keitaroUrl = generateAndSaveKeitaroUrl(intent.getDataString());
Log.w("debug", "appLinkData test: " + intent.getDataString());
} else {
Log.w("debug", "appLinkData = null");
keitaroUrl = null;
}
}
openBrowser(keitaroUrl);
}
});
}
}
);
}
}
private String generateAndSaveKeitaroUrl(String deepLink) {
String result = Uri.parse("https://app." + getString(R.string.domain) + "/api/entry")
.buildUpon()
.appendQueryParameter("package", BuildConfig.APPLICATION_ID)
.appendQueryParameter("timezone", TimeZone.getDefault().getID())
.appendQueryParameter("timezoneOffset", String.valueOf(TimeZone.getDefault().getOffset(new Date().getTime()) / 3600000))
.appendQueryParameter("language", Locale.getDefault().getLanguage())
.appendQueryParameter("version", BuildConfig.VERSION_NAME)
.appendQueryParameter("firebaseInstanceId", FirebaseInstanceId.getInstance().getId())
.appendQueryParameter("utm_content", (deepLink != null ? deepLink : ""))
.build().toString();
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(KEITARO_URL.toString(), result);
editor.apply();
return result;
}
private void openBrowser(String url) {
if (url != null) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);
finish();
} else {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(SHOW_WHITE_PAGE.toString(), true);
editor.apply();
progressDialog.dismiss();
webView.loadUrl(WHITE_PAGE_URL);
}
}
private void subscribeInOneSignal() {
Log.w("debug", "subscribeInOneSignal");
Thread myThread = new Thread(
new Runnable() {
public void run() {
OneSignal.startInit(getApplicationContext())
.inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
.unsubscribeWhenNotificationsAreDisabled(true)
.init();
OneSignal.setExternalUserId(FirebaseInstanceId.getInstance().getId());
}
}
);
myThread.start();
}
private void setWebView() {
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
settings.setAllowUniversalAccessFromFileURLs(true);
settings.setAllowFileAccessFromFileURLs(true);
settings.setAppCacheEnabled(true);
settings.setAllowFileAccess(true);
settings.setAllowContentAccess(true);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (progressDialog != null) {
progressDialog.dismiss();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment