Created
February 7, 2020 10:21
-
-
Save Zamay/a497b888cbef7c4e28eb68f1ac21fdb3 to your computer and use it in GitHub Desktop.
ПРиложение "Ярлык"
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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