bug fixes

master
msmannan00 2019-05-31 00:19:30 +05:00
parent 16af40adfb
commit 2e8b8ac629
38 changed files with 663 additions and 383 deletions

View File

@ -4,7 +4,7 @@ apply plugin: 'maven'
apply plugin: 'io.fabric' apply plugin: 'io.fabric'
ext { ext {
geckoviewChannel = "nightly" geckoviewChannel = ""
geckoviewVersion = "64.0.20180927100037" geckoviewVersion = "64.0.20180927100037"
} }
@ -43,26 +43,31 @@ android {
flavorDimensions "abi" flavorDimensions "abi"
productFlavors { productFlavors {
arm { /*arm {
versionCode 149 versionCode 152
versionName "145" versionName "152"
dimension "abi" dimension "abi"
} buildConfigField "String", "VARIANT", "\"arm\""
}*/
aarch64 { aarch64 {
versionCode 150 versionCode 153
versionName "146" versionName "153"
dimension "abi"
}
x86_64 {
versionCode 151
versionName "147"
dimension "abi" dimension "abi"
buildConfigField "String", "VARIANT", "\"aarch64\""
} }
/*
x86 { x86 {
versionCode 148 versionCode 154
versionName "148" versionName "154"
dimension "abi" dimension "abi"
buildConfigField "String", "VARIANT", "\"i686\""
} }
/*x86_64 {
versionCode 155
versionName "155"
dimension "abi"
buildConfigField "String", "VARIANT", "\"x86_64\""
}*/
} }
@ -104,10 +109,10 @@ dependencies {
implementation 'com.google.android.gms:play-services-ads:17.1.1' implementation 'com.google.android.gms:play-services-ads:17.1.1'
implementation "cz.msebera.android:httpclient:4.4.1.2" implementation "cz.msebera.android:httpclient:4.4.1.2"
x86Implementation "org.mozilla.geckoview:geckoview-nightly-x86:68.0.20190405111221" //x86Implementation "org.mozilla.geckoview:geckoview-x86:67.0.20190521210220"
x86_64Implementation "org.mozilla.geckoview:geckoview-nightly-x86_64:68.0.20190405111221" //x86_64Implementation "org.mozilla.geckoview:geckoview-x86_64:67.0.20190521210220"
armImplementation "org.mozilla.geckoview:geckoview-nightly-armeabi-v7a:68.0.20190405111221" //armImplementation "org.mozilla.geckoview:geckoview-armeabi-v7a:67.0.20190521210220"
aarch64Implementation "org.mozilla.geckoview:geckoview-nightly-arm64-v8a:68.0.20190405111221" aarch64Implementation "org.mozilla.geckoview:geckoview-arm64-v8a:67.0.20190521210220"
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9' implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
implementation 'com.crowdfire.cfalertdialog:cfalertdialog:1.1.0' implementation 'com.crowdfire.cfalertdialog:cfalertdialog:1.1.0'

View File

@ -1,140 +0,0 @@
package com.darkweb.genesissearchengine;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import cz.msebera.android.httpclient.HttpHost;
import android.content.Context;
import android.os.Build;
import android.util.Log;
/**
* Utility class for setting WebKit proxy used by Android WebView
*
*/
public class ProxySettings {
private static final String TAG = "GAEProxy.ProxySettings";
static final int PROXY_CHANGED = 193;
private static Object getDeclaredField(Object obj, String name) throws SecurityException,
NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
Field f = obj.getClass().getDeclaredField(name);
f.setAccessible(true);
Object out = f.get(obj);
// System.out.println(obj.getClass().getName() + "." + name + " = "+
// out);
return out;
}
public static Object getRequestQueue(Context ctx) throws Exception {
Object ret = null;
Class networkClass = Class.forName("android.webkit.Network");
if (networkClass != null) {
Object networkObj = invokeMethod(networkClass, "getInstance", new Object[] { ctx },
Context.class);
if (networkObj != null) {
ret = getDeclaredField(networkObj, "mRequestQueue");
}
}
return ret;
}
private static Object invokeMethod(Object object, String methodName, Object[] params,
Class... types) throws Exception {
Object out = null;
Class c = object instanceof Class ? (Class) object : object.getClass();
if (types != null) {
Method method = c.getMethod(methodName, types);
out = method.invoke(object, params);
} else {
Method method = c.getMethod(methodName);
out = method.invoke(object);
}
// System.out.println(object.getClass().getName() + "." + methodName +
// "() = "+ out);
return out;
}
public static void resetProxy(Context ctx) throws Exception {
Object requestQueueObject = getRequestQueue(ctx);
if (requestQueueObject != null) {
setDeclaredField(requestQueueObject, "mProxyHost", null);
}
}
private static void setDeclaredField(Object obj, String name, Object value)
throws SecurityException, NoSuchFieldException, IllegalArgumentException,
IllegalAccessException {
Field f = obj.getClass().getDeclaredField(name);
f.setAccessible(true);
f.set(obj, value);
}
/**
* Override WebKit Proxy settings
*
* @param ctx
* Android ApplicationContext
* @param host
* @param port
* @return true if Proxy was successfully set
*/
public static boolean setProxy(Context ctx, String host, int port) {
boolean ret = false;
setSystemProperties(host, port);
try {
if (Build.VERSION.SDK_INT < 14) {
Object requestQueueObject = getRequestQueue(ctx);
if (requestQueueObject != null) {
// Create Proxy config object and set it into request Q
HttpHost httpHost = new HttpHost(host, port, "http");
setDeclaredField(requestQueueObject, "mProxyHost", httpHost);
ret = true;
}
} else {
ret = setICSProxy(host, port);
}
} catch (Exception e) {
Log.e(TAG, "error setting up webkit proxying", e);
}
return ret;
}
private static boolean setICSProxy(String host, int port) throws ClassNotFoundException,
NoSuchMethodException, IllegalArgumentException, InstantiationException,
IllegalAccessException, InvocationTargetException {
Class webViewCoreClass = Class.forName("android.webkit.WebViewCore");
Class proxyPropertiesClass = Class.forName("android.net.ProxyProperties");
if (webViewCoreClass != null && proxyPropertiesClass != null) {
Method m = webViewCoreClass.getDeclaredMethod("sendStaticMessage", Integer.TYPE,
Object.class);
Constructor c = proxyPropertiesClass.getConstructor(String.class, Integer.TYPE,
String.class);
m.setAccessible(true);
c.setAccessible(true);
Object properties = c.newInstance(host, port, null);
m.invoke(null, PROXY_CHANGED, properties);
return true;
}
return false;
}
private static void setSystemProperties(String host, int port) {
System.setProperty("http.proxyHost", host);
System.setProperty("http.proxyPort", port + "");
System.setProperty("https.proxyHost", host);
System.setProperty("https.proxyPort", port + "");
}
}

View File

@ -0,0 +1,313 @@
package com.darkweb.genesissearchengine;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.net.Proxy;
import android.os.Build;
import android.os.Parcelable;
import android.util.Log;
import android.webkit.WebView;
import cz.msebera.android.httpclient.HttpHost;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import android.util.ArrayMap;
/**
* Code from http://stackoverflow.com/questions/4488338/webview-android-proxy
*/
public class WebkitProxy3 {
public static String LOG_TAG = "WebkitProxy3";
public static boolean setProxy(WebView webview, String host, int port, String applicationClassName) {
if (host == null)
return false;
// 3.2 (HC) or lower
if (Build.VERSION.SDK_INT <= 13) {
return setProxyUpToHC(webview, host, port);
}
// ICS: 4.0
else if (Build.VERSION.SDK_INT <= 15) {
return setProxyICS(webview, host, port);
}
// 4.1-4.3 (JB)
else if (Build.VERSION.SDK_INT <= 18) {
return setProxyJB(webview, host, port);
}
// 4.4 (KK) & 5.0 (Lollipop)
else {
return setProxyKKPlus(webview, host, port, applicationClassName);
}
}
/**
* Set Proxy for Android 3.2 and below.
*/
@SuppressWarnings("all")
private static boolean setProxyUpToHC(WebView webview, String host, int port) {
Log.d(LOG_TAG, "Setting proxy with <= 3.2 API.");
HttpHost proxyServer = new HttpHost(host, port);
// Getting network
Class networkClass = null;
Object network = null;
try {
networkClass = Class.forName("android.webkit.Network");
if (networkClass == null) {
Log.e(LOG_TAG, "failed to get class for android.webkit.Network");
return false;
}
Method getInstanceMethod = networkClass.getMethod("getInstance", Context.class);
if (getInstanceMethod == null) {
Log.e(LOG_TAG, "failed to get getInstance method");
}
network = getInstanceMethod.invoke(networkClass, new Object[]{webview.getContext()});
} catch (Exception ex) {
Log.e(LOG_TAG, "error getting network: " + ex);
return false;
}
if (network == null) {
Log.e(LOG_TAG, "error getting network: network is null");
return false;
}
Object requestQueue = null;
try {
Field requestQueueField = networkClass
.getDeclaredField("mRequestQueue");
requestQueue = getFieldValueSafely(requestQueueField, network);
} catch (Exception ex) {
Log.e(LOG_TAG, "error getting field value");
return false;
}
if (requestQueue == null) {
Log.e(LOG_TAG, "Request queue is null");
return false;
}
Field proxyHostField = null;
try {
Class requestQueueClass = Class.forName("android.net.http.RequestQueue");
proxyHostField = requestQueueClass
.getDeclaredField("mProxyHost");
} catch (Exception ex) {
Log.e(LOG_TAG, "error getting proxy host field");
return false;
}
boolean temp = proxyHostField.isAccessible();
try {
proxyHostField.setAccessible(true);
proxyHostField.set(requestQueue, proxyServer);
} catch (Exception ex) {
Log.e(LOG_TAG, "error setting proxy host");
} finally {
proxyHostField.setAccessible(temp);
}
Log.d(LOG_TAG, "Setting proxy with <= 3.2 API successful!");
return true;
}
@SuppressWarnings("all")
private static boolean setProxyICS(WebView webview, String host, int port) {
try
{
Log.d(LOG_TAG, "Setting proxy with 4.0 API.");
Class jwcjb = Class.forName("android.webkit.JWebCoreJavaBridge");
Class params[] = new Class[1];
params[0] = Class.forName("android.net.ProxyProperties");
Method updateProxyInstance = jwcjb.getDeclaredMethod("updateProxy", params);
Class wv = Class.forName("android.webkit.WebView");
Field mWebViewCoreField = wv.getDeclaredField("mWebViewCore");
Object mWebViewCoreFieldInstance = getFieldValueSafely(mWebViewCoreField, webview);
Class wvc = Class.forName("android.webkit.WebViewCore");
Field mBrowserFrameField = wvc.getDeclaredField("mBrowserFrame");
Object mBrowserFrame = getFieldValueSafely(mBrowserFrameField, mWebViewCoreFieldInstance);
Class bf = Class.forName("android.webkit.BrowserFrame");
Field sJavaBridgeField = bf.getDeclaredField("sJavaBridge");
Object sJavaBridge = getFieldValueSafely(sJavaBridgeField, mBrowserFrame);
Class ppclass = Class.forName("android.net.ProxyProperties");
Class pparams[] = new Class[3];
pparams[0] = String.class;
pparams[1] = int.class;
pparams[2] = String.class;
Constructor ppcont = ppclass.getConstructor(pparams);
updateProxyInstance.invoke(sJavaBridge, ppcont.newInstance(host, port, null));
Log.d(LOG_TAG, "Setting proxy with 4.0 API successful!");
return true;
}
catch (Exception ex)
{
Log.e(LOG_TAG, "failed to set HTTP proxy: " + ex);
return false;
}
}
/**
* Set Proxy for Android 4.1 - 4.3.
*/
@SuppressWarnings("all")
private static boolean setProxyJB(WebView webview, String host, int port) {
Log.d(LOG_TAG, "Setting proxy with 4.1 - 4.3 API.");
try {
Class wvcClass = Class.forName("android.webkit.WebViewClassic");
Class wvParams[] = new Class[1];
wvParams[0] = Class.forName("android.webkit.WebView");
Method fromWebView = wvcClass.getDeclaredMethod("fromWebView", wvParams);
Object webViewClassic = fromWebView.invoke(null, webview);
Class wv = Class.forName("android.webkit.WebViewClassic");
Field mWebViewCoreField = wv.getDeclaredField("mWebViewCore");
Object mWebViewCoreFieldInstance = getFieldValueSafely(mWebViewCoreField, webViewClassic);
Class wvc = Class.forName("android.webkit.WebViewCore");
Field mBrowserFrameField = wvc.getDeclaredField("mBrowserFrame");
Object mBrowserFrame = getFieldValueSafely(mBrowserFrameField, mWebViewCoreFieldInstance);
Class bf = Class.forName("android.webkit.BrowserFrame");
Field sJavaBridgeField = bf.getDeclaredField("sJavaBridge");
Object sJavaBridge = getFieldValueSafely(sJavaBridgeField, mBrowserFrame);
Class ppclass = Class.forName("android.net.ProxyProperties");
Class pparams[] = new Class[3];
pparams[0] = String.class;
pparams[1] = int.class;
pparams[2] = String.class;
Constructor ppcont = ppclass.getConstructor(pparams);
Class jwcjb = Class.forName("android.webkit.JWebCoreJavaBridge");
Class params[] = new Class[1];
params[0] = Class.forName("android.net.ProxyProperties");
Method updateProxyInstance = jwcjb.getDeclaredMethod("updateProxy", params);
updateProxyInstance.invoke(sJavaBridge, ppcont.newInstance(host, port, null));
} catch (Exception ex) {
Log.e(LOG_TAG,"Setting proxy with >= 4.1 API failed with error: " + ex.getMessage());
return false;
}
Log.d(LOG_TAG, "Setting proxy with 4.1 - 4.3 API successful!");
return true;
}
// from https://stackoverflow.com/questions/19979578/android-webview-set-proxy-programatically-kitkat
@SuppressLint("NewApi")
@SuppressWarnings("all")
private static boolean setProxyKKPlus(WebView webView, String host, int port, String applicationClassName) {
Log.d(LOG_TAG, "Setting proxy with >= 4.4 API.");
Context appContext = webView.getContext().getApplicationContext();
System.setProperty("http.proxyHost", host);
System.setProperty("http.proxyPort", port + "");
System.setProperty("https.proxyHost", host);
System.setProperty("https.proxyPort", port + "");
try {
Class applictionCls = Class.forName(applicationClassName);
Field loadedApkField = applictionCls.getField("mLoadedApk");
loadedApkField.setAccessible(true);
Object loadedApk = loadedApkField.get(appContext);
Class loadedApkCls = Class.forName("android.app.LoadedApk");
Field receiversField = loadedApkCls.getDeclaredField("mReceivers");
receiversField.setAccessible(true);
ArrayMap receivers = (ArrayMap) receiversField.get(loadedApk);
for (Object receiverMap : receivers.values()) {
for (Object rec : ((ArrayMap) receiverMap).keySet()) {
Class clazz = rec.getClass();
if (clazz != null && clazz.getName() != null && clazz.getName().contains("ProxyChangeListener")) {
Method onReceiveMethod = clazz.getDeclaredMethod("onReceive", Context.class, Intent.class);
if (onReceiveMethod == null)
continue;
Intent intent = new Intent(Proxy.PROXY_CHANGE_ACTION);
try {
/*********** optional, may be need in future *************/
String CLASS_NAME;
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
CLASS_NAME = "android.net.ProxyProperties";
} else {
CLASS_NAME = "android.net.ProxyInfo";
}
Class cls = Class.forName(CLASS_NAME);
Constructor constructor = cls.getConstructor(String.class, Integer.TYPE, String.class);
constructor.setAccessible(true);
Object proxyProperties = constructor.newInstance(host, port, null);
intent.putExtra("proxy", (Parcelable) proxyProperties);
/*********** optional, may be need in future *************/
} catch (Exception e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
Log.v(LOG_TAG, e.getMessage());
Log.v(LOG_TAG, exceptionAsString);
}
onReceiveMethod.invoke(rec, appContext, intent);
}
}
}
Log.d(LOG_TAG, "Setting proxy with >= 4.4 API successful!");
return true;
} catch (ClassNotFoundException e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
Log.v(LOG_TAG, e.getMessage());
Log.v(LOG_TAG, exceptionAsString);
} catch (NoSuchFieldException e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
Log.v(LOG_TAG, e.getMessage());
Log.v(LOG_TAG, exceptionAsString);
} catch (IllegalAccessException e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
Log.v(LOG_TAG, e.getMessage());
Log.v(LOG_TAG, exceptionAsString);
} catch (IllegalArgumentException e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
Log.v(LOG_TAG, e.getMessage());
Log.v(LOG_TAG, exceptionAsString);
} catch (NoSuchMethodException e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
Log.v(LOG_TAG, e.getMessage());
Log.v(LOG_TAG, exceptionAsString);
} catch (InvocationTargetException e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
Log.v(LOG_TAG, e.getMessage());
Log.v(LOG_TAG, exceptionAsString);
}
return false;
}
private static Object getFieldValueSafely(Field field, Object classInstance) throws IllegalArgumentException, IllegalAccessException {
boolean oldAccessibleValue = field.isAccessible();
field.setAccessible(true);
Object result = field.get(classInstance);
field.setAccessible(oldAccessibleValue);
return result;
}
}

View File

@ -1,6 +1,7 @@
package com.darkweb.genesissearchengine; package com.darkweb.genesissearchengine;
import android.content.Context; import android.content.Context;
import android.util.Log;
import com.google.android.gms.ads.AdListener; import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd; import com.google.android.gms.ads.InterstitialAd;
@ -59,31 +60,40 @@ public class admanager {
public void showAd(boolean isAdForced) public void showAd(boolean isAdForced)
{ {
Log.i("SHITSS","SHITSS 1" + " --- " + mInterstitialAd.isLoading() + " --- " + mInterstitialAd.isLoaded());
if(!mInterstitialAd.isLoading() && !mInterstitialAd.isLoaded()) if(!mInterstitialAd.isLoading() && !mInterstitialAd.isLoaded())
{ {
Log.i("SHITSS","SHITSS 2");
mInterstitialAd.loadAd(new AdRequest.Builder().build()); mInterstitialAd.loadAd(new AdRequest.Builder().build());
if(isAdForced || adCount==0 || adCount%3==0) if(isAdForced || adCount==0 || adCount%3==0)
{ {
Log.i("SHITSS","SHITSS 3");
adCount = 0; adCount = 0;
} }
else else
{ {
Log.i("SHITSS","SHITSS 4");
adCount+=1; adCount+=1;
} }
} }
else else
{ {
Log.i("SHITSS","SHITSS 5");
if(mInterstitialAd.isLoaded()) if(mInterstitialAd.isLoaded())
{ {
Log.i("SHITSS","SHITSS 6");
if(isAdForced) if(isAdForced)
{ {
Log.i("SHITSS","SHITSS 7");
mInterstitialAd.show(); mInterstitialAd.show();
adCount = 1; adCount = 1;
} }
else else
{ {
Log.i("SHITSS","SHITSS 8");
if(adCount%3==0) if(adCount%3==0)
{ {
Log.i("SHITSS","SHITSS 9");
mInterstitialAd.show(); mInterstitialAd.show();
} }
adCount += 1; adCount += 1;

View File

@ -3,7 +3,10 @@ package com.darkweb.genesissearchengine;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.Point;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
@ -17,14 +20,15 @@ import android.text.Spanned;
import android.text.style.ForegroundColorSpan; import android.text.style.ForegroundColorSpan;
import android.util.Log; import android.util.Log;
import android.util.Patterns; import android.util.Patterns;
import android.view.KeyEvent; import android.view.*;
import android.view.View; import android.view.animation.Animation;
import android.view.Window; import android.view.animation.AnimationUtils;
import android.view.WindowManager; import android.view.animation.RotateAnimation;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.webkit.*; import android.webkit.*;
import android.widget.*; import android.widget.*;
import com.crashlytics.android.Crashlytics; import com.crashlytics.android.Crashlytics;
import com.example.myapplication.BuildConfig;
import io.fabric.sdk.android.Fabric; import io.fabric.sdk.android.Fabric;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException; import java.net.MalformedURLException;
@ -37,6 +41,7 @@ import org.mozilla.geckoview.GeckoSession;
import org.mozilla.geckoview.GeckoView; import org.mozilla.geckoview.GeckoView;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
import static java.lang.Thread.sleep; import static java.lang.Thread.sleep;
public class application_controller extends AppCompatActivity public class application_controller extends AppCompatActivity
@ -48,7 +53,7 @@ public class application_controller extends AppCompatActivity
private GeckoView webLoader; private GeckoView webLoader;
private ProgressBar progressBar; private ProgressBar progressBar;
private ConstraintLayout requestFailure; private ConstraintLayout requestFailure;
private ConstraintLayout splashScreen; private FrameLayout splashScreen;
private FloatingActionButton floatingButton; private FloatingActionButton floatingButton;
private Button reloadButton; private Button reloadButton;
private ImageButton homeButton; private ImageButton homeButton;
@ -56,7 +61,7 @@ public class application_controller extends AppCompatActivity
private LinearLayout topbar; private LinearLayout topbar;
private GeckoSession session1; private GeckoSession session1;
private GeckoRuntime runtime1; private GeckoRuntime runtime1;
private String version_code = "3.0"; private String version_code = "5.0";
private boolean wasBackPressed = false; private boolean wasBackPressed = false;
private boolean isLoadedUrlSet = false; private boolean isLoadedUrlSet = false;
private boolean isGeckoURLLoadded = false; private boolean isGeckoURLLoadded = false;
@ -76,11 +81,13 @@ public class application_controller extends AppCompatActivity
protected void onCreate(Bundle savedInstanceState) protected void onCreate(Bundle savedInstanceState)
{ {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if(BuildConfig.FLAVOR.equals("aarch64")&&Build.SUPPORTED_ABIS[0].equals("arm64-v8a") || BuildConfig.FLAVOR.equals("arm")&&Build.SUPPORTED_ABIS[0].equals("armeabi-v7a") || BuildConfig.FLAVOR.equals("x86")&&Build.SUPPORTED_ABIS[0].equals("x86") || BuildConfig.FLAVOR.equals("x86_64")&&Build.SUPPORTED_ABIS[0].equals("x86_64"))
{
//initializeCrashlytics(); //initializeCrashlytics();
initializeBackgroundColor(); initializeBackgroundColor();
//setOrientation();
setContentView(R.layout.application_view); setContentView(R.layout.application_view);
//orbot_manager.getInstance().initializeTorClient(this); orbot_manager.getInstance().initializeTorClient(this, webView1, webView2);
initializeStatus(); initializeStatus();
initializeRunnable(); initializeRunnable();
initializeConnections(); initializeConnections();
@ -88,6 +95,13 @@ public class application_controller extends AppCompatActivity
initializeView(); initializeView();
initializeAds(); initializeAds();
checkSSLTextColor(); checkSSLTextColor();
initSplashScreen();
}
else
{
setContentView(R.layout.invalid_setup);
message_manager.getInstance().abiError(this,Build.SUPPORTED_ABIS[0]);
}
} }
public void setOrientation() public void setOrientation()
@ -95,6 +109,41 @@ public class application_controller extends AppCompatActivity
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} }
public void initSplashScreen()
{
ImageView view = findViewById(R.id.imageView_loading_back);
RotateAnimation rotate = new RotateAnimation(0, 360,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
0.5f);
rotate.setDuration(2000);
rotate.setRepeatCount(Animation.INFINITE);
view.setAnimation(rotate);
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
float width_x = size.x;
float height_y = size.y;
ImageView splashlogo = findViewById(R.id.backsplash);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) splashlogo.getLayoutParams();
//int height = Resources.getSystem().getDisplayMetrics().heightPixels+getStatusBarHeight(this);
//splashlogo.getLayoutParams().height = splashlogo.getLayoutParams().height-300;
params.topMargin = getStatusBarHeight(this)/2;
splashlogo.setLayoutParams(params);
}
public int getStatusBarHeight(Context c) {
int result = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = getResources().getDimensionPixelSize(resourceId);
}
return result;
}
public void initializeBackgroundColor() public void initializeBackgroundColor()
{ {
if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.M){ if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.M){
@ -121,7 +170,7 @@ public class application_controller extends AppCompatActivity
String version = preference_manager.getInstance().getString("version","none",this); String version = preference_manager.getInstance().getString("version","none",this);
if(!version.equals(version_code) && !version.equals("none")) if(!version.equals(version_code) && !version.equals("none"))
{ {
message_manager.getInstance().versionWarning(this); message_manager.getInstance().versionWarning(this,Build.SUPPORTED_ABIS[0]);
} }
webRequestHandler.getInstance().getVersion(this); webRequestHandler.getInstance().getVersion(this);
} }
@ -168,7 +217,7 @@ public class application_controller extends AppCompatActivity
public void initializeWebViews() public void initializeWebViews()
{ {
webRequestHandler.getInstance().initialization(webView1,webView2,progressBar,searchbar,requestFailure,this,splashScreen,this); webRequestHandler.getInstance().initialization(webView1,webView2,progressBar,searchbar, splashScreen,this, requestFailure,this);
webView1.bringToFront(); webView1.bringToFront();
Log.i("PROBLEM25",""); Log.i("PROBLEM25","");
progressBar.animate().setDuration(150).alpha(0f); progressBar.animate().setDuration(150).alpha(0f);
@ -214,9 +263,6 @@ public class application_controller extends AppCompatActivity
requestFailure.animate().setDuration(0).alpha(0.0f); requestFailure.animate().setDuration(0).alpha(0.0f);
progressBar.animate().setDuration(150).alpha(0f); progressBar.animate().setDuration(150).alpha(0f);
webView1.loadUrl(constants.backendUrl);
try {Thread.sleep(100);} catch (Exception e) {}
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
loadURLAnimate(constants.backendUrl); loadURLAnimate(constants.backendUrl);
initializeViewClients(); initializeViewClients();
@ -347,7 +393,7 @@ public class application_controller extends AppCompatActivity
super.onPageFinished(view, url); super.onPageFinished(view, url);
handler = new Handler(); handler = new Handler();
int delay = 800; int delay = 200;
if(startPage>2) if(startPage>2)
{ {
delay = 0; delay = 0;
@ -382,19 +428,7 @@ public class application_controller extends AppCompatActivity
status.hasApplicationLoaded = true; status.hasApplicationLoaded = true;
handler = new Handler(); handler = new Handler();
splashScreen.animate().alpha(0.0f).setStartDelay(500).setDuration(300).setListener(null).withEndAction((() -> splashScreen.setVisibility(View.GONE))); splashScreen.animate().alpha(0.0f).setStartDelay(100).setDuration(300).setListener(null).withEndAction((() -> splashScreen.setVisibility(View.GONE)));
versionChecker();
}
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(searchbar.getWindowToken(), 0);
}
}, delay);
Handler popuphandler = new Handler(); Handler popuphandler = new Handler();
@ -403,11 +437,25 @@ public class application_controller extends AppCompatActivity
public void run() { public void run() {
if(status.hasApplicationLoaded && !isTutorialPopupShown) if(status.hasApplicationLoaded && !isTutorialPopupShown)
{ {
message_manager.getInstance().welcomeMessage(application_controller.this,application_controller.this); if(!helperMethod.readPrefs("FirstTimeLoaded",application_controller.this)) {
message_manager.getInstance().welcomeMessage(application_controller.this, application_controller.this);
isTutorialPopupShown = true; isTutorialPopupShown = true;
} }
else if(buildconstants.build_type.equals("local"))
{
versionChecker();
}
}
} }
}, 2000); }, 2000);
}
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(searchbar.getWindowToken(), 0);
}
}, delay);
} }
@Override @Override
@ -814,7 +862,6 @@ class progressDelegate implements GeckoSession.ProgressDelegate
public boolean onEditorClicked(TextView v, int actionId, KeyEvent event) public boolean onEditorClicked(TextView v, int actionId, KeyEvent event)
{ {
KeyboardUtils.hideKeyboard(application_controller.this); KeyboardUtils.hideKeyboard(application_controller.this);
Log.i("FUCKOFF : ",actionId+"");
try try
{ {
session1.stop(); session1.stop();
@ -870,16 +917,24 @@ class progressDelegate implements GeckoSession.ProgressDelegate
} }
else else
{ {
loadURLAnimate("https://boogle.store/search?q="+v.getText().toString().replaceAll(" ","+")+"&p_num=1&s_type=all"); String editedURL = "https://boogle.store/search?q="+v.getText().toString().replaceAll(" ","+")+"&p_num=1&s_type=all";
status.currentURL = editedURL;
searchbar.setText(editedURL.replace("boogle.store","genesis.onion"));
searchbar.clearFocus();
loadURLAnimate(editedURL);
} }
} }
catch (IOException e) catch (IOException e)
{ {
loadURLAnimate("https://boogle.store/search?q="+v.getText().toString().replaceAll(" ","+")+"&p_num=1&s_type=all"); String editedURL = "https://boogle.store/search?q="+v.getText().toString().replaceAll(" ","+")+"&p_num=1&s_type=all";
status.currentURL = editedURL;
searchbar.clearFocus();
searchbar.setText(editedURL.replace("boogle.store","genesis.onion"));
loadURLAnimate(editedURL);
e.printStackTrace(); e.printStackTrace();
} }
return false; return true;
} }

View File

@ -0,0 +1,7 @@
package com.darkweb.genesissearchengine;
public class buildconstants
{
//public static String build_type = "playstore";
public static String build_type = "local";
}

View File

@ -2,8 +2,8 @@ package com.darkweb.genesissearchengine;
public class constants public class constants
{ {
//public static String backendUrl = "https://boogle.store"; public static String backendUrl = "https://boogle.store";
public static String backendUrl = "http://msydqstlz2kzerdg.onion/"; //public static String backendUrl = "http://msydqstlz2kzerdg.onion/";
public static String backendUrlHost = "boogle.store"; public static String backendUrlHost = "boogle.store";
public static String frontEndUrlHost = "genesis.store"; public static String frontEndUrlHost = "genesis.store";
public static String allowedHost = ".onion"; public static String allowedHost = ".onion";

View File

@ -8,9 +8,12 @@ import android.net.ConnectivityManager;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import java.io.*;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import static android.content.Context.MODE_PRIVATE;
public class helperMethod public class helperMethod
{ {
public static boolean isNetworkAvailable(Context application_context) public static boolean isNetworkAvailable(Context application_context)
@ -54,6 +57,22 @@ public class helperMethod
break; break;
} }
} }
}
public static String readInternalHTML(Context applicationContext)
{
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(applicationContext);
return prefs.getString("internalhtml","");
}
public static void setInternalHTML(String html,Context applicationContext)
{
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(applicationContext);
SharedPreferences.Editor edit = prefs.edit();
edit.putString("internalhtml", html);
edit.commit();
} }

View File

@ -2,7 +2,10 @@ package com.darkweb.genesissearchengine;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.net.Uri;
import com.crowdfire.cfalertdialog.CFAlertDialog; import com.crowdfire.cfalertdialog.CFAlertDialog;
public class message_manager { public class message_manager {
@ -16,8 +19,6 @@ public class message_manager {
} }
public void welcomeMessage(Context application_context, application_controller controller) public void welcomeMessage(Context application_context, application_controller controller)
{
if(!helperMethod.readPrefs("FirstTimeLoaded",application_context))
{ {
CFAlertDialog.Builder builder = new CFAlertDialog.Builder(application_context) CFAlertDialog.Builder builder = new CFAlertDialog.Builder(application_context)
.setDialogStyle(CFAlertDialog.CFAlertStyle.ALERT) .setDialogStyle(CFAlertDialog.CFAlertStyle.ALERT)
@ -51,7 +52,6 @@ public class message_manager {
helperMethod.savePrefs("FirstTimeLoaded",true,application_context); helperMethod.savePrefs("FirstTimeLoaded",true,application_context);
}); });
builder.show(); builder.show();
}
// Create Alert using Builder // Create Alert using Builder
@ -87,6 +87,32 @@ public class message_manager {
builder.show(); builder.show();
} }
public void abiError(Context application_context,String currentAbi)
{
CFAlertDialog.Builder builder = new CFAlertDialog.Builder(application_context)
.setDialogStyle(CFAlertDialog.CFAlertStyle.BOTTOM_SHEET)
.setTitle("Invalid Setup File")
.setBackgroundColor(Color.argb(230,33,45,69))
.setTextColor(Color.argb(255,255,255,255))
.onDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
abiError(application_context,currentAbi);
}
})
.setMessage("Looks like you messed up the installation. Either Install it from playstore or follow the link")
.addButton("Local Upgrade", -1, -1, CFAlertDialog.CFAlertActionStyle.POSITIVE, CFAlertDialog.CFAlertActionAlignment.JUSTIFIED, (dialog, which) -> {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://boogle.store/manual?abi="+currentAbi));
application_context.startActivity(browserIntent);
})
.addButton("Playstore Upgrade", -1, -1, CFAlertDialog.CFAlertActionStyle.POSITIVE, CFAlertDialog.CFAlertActionAlignment.JUSTIFIED, (dialog, which) -> {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=com.darkweb.genesissearchengine"));
application_context.startActivity(browserIntent);
});
builder.show();
}
public void illegalWarningDialog(Context application_context,application_controller controller) public void illegalWarningDialog(Context application_context,application_controller controller)
{ {
CFAlertDialog.Builder builder = new CFAlertDialog.Builder(application_context) CFAlertDialog.Builder builder = new CFAlertDialog.Builder(application_context)
@ -173,26 +199,20 @@ public class message_manager {
builder.show(); builder.show();
} }
public void versionWarning(Context application_context) public void versionWarning(Context application_context,String currentAbi)
{/*
new LovelyStandardDialog(application_context)
.setTopColorRes(R.color.header)
.setIcon(R.drawable.logo)
.setTitle("Update Application")
.setMessage("A newer version is availabe please install to get better experience")
.setPositiveButton(android.R.string.ok, new View.OnClickListener() {
@Override
public void onClick(View v)
{ {
String url = "http://boogle.store/android"; CFAlertDialog.Builder builder = new CFAlertDialog.Builder(application_context)
Intent i = new Intent(Intent.ACTION_VIEW); .setDialogStyle(CFAlertDialog.CFAlertStyle.BOTTOM_SHEET)
i.setData(Uri.parse(url)); .setTitle("Update Pending")
application_context.startActivity(i); .setBackgroundColor(Color.argb(230,33,45,69))
} .setTextColor(Color.argb(255,255,255,255))
}) .setMessage("You have not updated this app for a while please update it to get best performance\n")
.setNegativeButton(android.R.string.no, null) .addButton("Update", -1, -1, CFAlertDialog.CFAlertActionStyle.POSITIVE, CFAlertDialog.CFAlertActionAlignment.END, (dialog, which) -> {
.show(); Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://boogle.store/manual?abi="+currentAbi));
*/ application_context.startActivity(browserIntent);
});
builder.show();
} }
} }

View File

@ -2,6 +2,7 @@ package com.darkweb.genesissearchengine;
import android.content.Context; import android.content.Context;
import android.util.Log; import android.util.Log;
import android.webkit.WebView;
import com.msopentech.thali.android.toronionproxy.AndroidOnionProxyManager; import com.msopentech.thali.android.toronionproxy.AndroidOnionProxyManager;
import com.msopentech.thali.toronionproxy.OnionProxyManager; import com.msopentech.thali.toronionproxy.OnionProxyManager;
import org.mozilla.gecko.PrefsHelper; import org.mozilla.gecko.PrefsHelper;
@ -14,6 +15,8 @@ public class orbot_manager {
boolean isLoading = false; boolean isLoading = false;
OnionProxyManager onionProxyManager = null; OnionProxyManager onionProxyManager = null;
Context applicationContext = null; Context applicationContext = null;
WebView view1=null;
WebView view2=null;
public static orbot_manager getInstance() { public static orbot_manager getInstance() {
return ourInstance; return ourInstance;
@ -27,7 +30,7 @@ public class orbot_manager {
if(!status.isTorInitialized) if(!status.isTorInitialized)
{ {
message_manager.getInstance().startingOrbotInfo(application_context); message_manager.getInstance().startingOrbotInfo(application_context);
initializeTorClient(application_context); initializeTorClient(application_context,view1,view2);
return false; return false;
} }
else else
@ -61,8 +64,13 @@ public class orbot_manager {
} }
} }
public void initializeTorClient(Context applicationContext) public void initializeTorClient(Context applicationContext,WebView view1,WebView view2)
{ {
if(view1==null)
{
this.view1 = view1;
this.view2 = view2;
}
if(isLoading) if(isLoading)
{ {
return; return;
@ -70,54 +78,51 @@ public class orbot_manager {
new Thread() new Thread()
{ {
public void run() public void run()
{
while (true)
{ {
try try
{ {
isLoading = true; isLoading = true;
String fileStorageLocation = "torfiles"; String fileStorageLocation = "torfiles";
if(onionProxyManager!=null && onionProxyManager.isRunning())
{
break;
}
onionProxyManager = new AndroidOnionProxyManager(applicationContext, fileStorageLocation); onionProxyManager = new AndroidOnionProxyManager(applicationContext, fileStorageLocation);
int totalSecondsPerTorStartup = 4 * 60; int totalSecondsPerTorStartup = 4 * 60;
int totalTriesPerTorStartup = 5; int totalTriesPerTorStartup = 5;
try {
boolean ok = onionProxyManager.startWithRepeat(totalSecondsPerTorStartup, totalTriesPerTorStartup); boolean ok = onionProxyManager.startWithRepeat(totalSecondsPerTorStartup, totalTriesPerTorStartup);
if (!ok) { if (!ok) {
Log.i("TorTest", "Couldn't start Tor!"); Log.i("TorTest", "Couldn't start Tor!");
return; return;
} } else {
else if (onionProxyManager.isRunning()) {
{
if(onionProxyManager.isRunning()) {
Log.i("My App", "Tor initialized on port " + onionProxyManager.getIPv4LocalHostSocksPort()); Log.i("My App", "Tor initialized on port " + onionProxyManager.getIPv4LocalHostSocksPort());
} }
} }
}
catch (Exception ex) {
ex.printStackTrace();
}
while (!onionProxyManager.isRunning()) while (!onionProxyManager.isRunning()) {
{
sleep(1000); sleep(1000);
} }
if(onionProxyManager.isRunning()) if (onionProxyManager.isRunning()) {
{
Log.i("My App", "Tor initialized on port " + onionProxyManager.getIPv4LocalHostSocksPort()); Log.i("My App", "Tor initialized on port " + onionProxyManager.getIPv4LocalHostSocksPort());
status.port = onionProxyManager.getIPv4LocalHostSocksPort(); status.port = onionProxyManager.getIPv4LocalHostSocksPort();
initializeProxy(); initializeProxy();
sleep(1500); sleep(1500);
status.isTorInitialized = true; status.isTorInitialized = true;
break;
} }
isLoading = false; isLoading = false;
} } catch (Exception ex) {
catch (InterruptedException e) ex.printStackTrace();
{ continue;
isLoading = false;
e.printStackTrace();
} catch (IOException e) {
isLoading = false;
e.printStackTrace();
} }
} }
}
}.start(); }.start();
} }
@ -134,8 +139,8 @@ public class orbot_manager {
PrefsHelper.setPref("general.useragent.override", "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0"); PrefsHelper.setPref("general.useragent.override", "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0");
PrefsHelper.setPref("privacy.donottrackheader.enabled",false); PrefsHelper.setPref("privacy.donottrackheader.enabled",false);
PrefsHelper.setPref("privacy.donottrackheader.value",1); PrefsHelper.setPref("privacy.donottrackheader.value",1);
ProxySettings.setProxy(applicationContext, "127.0.0.1", status.port);
} }
} }

View File

@ -9,6 +9,7 @@ import android.util.Log;
import android.view.View; import android.view.View;
import android.webkit.WebView; import android.webkit.WebView;
import android.widget.EditText; import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ProgressBar; import android.widget.ProgressBar;
@ -40,7 +41,7 @@ public class webRequestHandler
private WebView[] view = new WebView[2]; private WebView[] view = new WebView[2];
private ProgressBar progressBar; private ProgressBar progressBar;
private EditText searchbar; private EditText searchbar;
private ConstraintLayout requestFailure; private FrameLayout requestFailure;
public boolean reloadError=false; public boolean reloadError=false;
public boolean isReloadedUrl = false; public boolean isReloadedUrl = false;
@ -58,6 +59,7 @@ public class webRequestHandler
private final static int MESSAGE_UPDATE_TEXT_CHILD_THREAD =1; private final static int MESSAGE_UPDATE_TEXT_CHILD_THREAD =1;
private final static int RELOAD_ERROR =3; private final static int RELOAD_ERROR =3;
private application_controller controller; private application_controller controller;
private Context applictionContext;
public static webRequestHandler getInstance() { public static webRequestHandler getInstance() {
return ourInstance; return ourInstance;
@ -67,8 +69,9 @@ public class webRequestHandler
{ {
} }
public void initialization(WebView view1, WebView view2, ProgressBar progressBar, EditText searchbar, ConstraintLayout requestFailure, Context applicationContext,ConstraintLayout splash,application_controller controller) public void initialization(WebView view1, WebView view2, ProgressBar progressBar, EditText searchbar, FrameLayout requestFailure, Context applicationContext,ConstraintLayout splash,application_controller controller)
{ {
this.applictionContext = applicationContext;
this.controller = controller; this.controller = controller;
this.splash = splash; this.splash = splash;
this.view[0] = view1; this.view[0] = view1;
@ -108,6 +111,7 @@ public class webRequestHandler
} }
clientThread = new Thread(() -> { clientThread = new Thread(() -> {
String errorMessage = "";
try try
{ {
Log.i("STEST : 5","1"); Log.i("STEST : 5","1");
@ -125,7 +129,8 @@ public class webRequestHandler
} }
catch (Exception e) catch (Exception e)
{ {
Log.i("STEST : 8","1"); Log.i("STEST : 8","1 : " + e.getMessage());
errorMessage = e.getMessage();
if(!e.getMessage().contains("Socket closed") && !e.getMessage().contains("failed to respond") && e.getMessage().contains("Unable to resolve host \"boogle.store\"")) if(!e.getMessage().contains("Socket closed") && !e.getMessage().contains("failed to respond") && e.getMessage().contains("Unable to resolve host \"boogle.store\""))
{ {
Log.i("STEST99 : 9","1 : "+e.getMessage()); Log.i("STEST99 : 9","1 : "+e.getMessage());
@ -134,6 +139,8 @@ public class webRequestHandler
e.printStackTrace(); e.printStackTrace();
} }
} }
}); });
clientThread.start(); clientThread.start();
} }
@ -161,8 +168,26 @@ public class webRequestHandler
} }
} }
public void nonProxyConnection(String url) throws IOException { public void nonProxyConnection(String url) throws IOException
{
url = url.replace("http://boogle","https://boogle"); url = url.replace("http://boogle","https://boogle");
Log.i("SHITS","fizza " + url);
if(url.equals("https://boogle.store"))
{
String html_local = helperMethod.readInternalHTML(applictionContext);
Log.i("SHITS","fizza1 " + html_local);
if(html_local.length()>1)
{
Log.i("SHITS","fizza2 " + url);
html = html_local;
Message message = new Message();
message.what = MESSAGE_UPDATE_TEXT_CHILD_THREAD;
updateUIHandler.sendMessage(message);
return;
}
}
HttpClient client=new DefaultHttpClient();; HttpClient client=new DefaultHttpClient();;
try { try {
SSLConnectionSocketFactory scsf = new SSLConnectionSocketFactory( SSLConnectionSocketFactory scsf = new SSLConnectionSocketFactory(
@ -193,10 +218,16 @@ public class webRequestHandler
in.close(); in.close();
html = str.toString(); html = str.toString();
if(url.equals("https://boogle.store"))
{
html = html.replace("/privacy","https://boogle.store/privacy").replace("/about","https://boogle.store/about").replace("/reportus","https://boogle.store/reportus").replace("/search?q=random&p_num=1&s_type=image","https://boogle.store/search?q=random&p_num=1&s_type=image");
Log.i("SHITS","fizza3 " + html);
helperMethod.setInternalHTML(html,applictionContext);
}
Message message = new Message(); Message message = new Message();
message.what = MESSAGE_UPDATE_TEXT_CHILD_THREAD; message.what = MESSAGE_UPDATE_TEXT_CHILD_THREAD;
updateUIHandler.sendMessage(message); updateUIHandler.sendMessage(message);
} }
public void reportURL(String url) public void reportURL(String url)

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@color/splashblue"/>
</layer-list>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient <gradient
android:startColor="#141e30" android:startColor="#4d88ff"
android:endColor="#004e92" android:endColor="#4d88ff"
android:angle="135" android:angle="135"
/> />
</shape> </shape>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@color/splashblue"/>
</layer-list>

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -163,60 +163,26 @@
android:indeterminateOnly="true" android:indeterminateOnly="true"
android:progress="50" app:layout_constraintTop_toTopOf="parent" android:progress="50" app:layout_constraintTop_toTopOf="parent"
/> />
<android.support.constraint.ConstraintLayout
<FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:id="@+id/splashScreen" android:id="@+id/splashScreen"
android:background="@drawable/backgradient" android:background="@color/splashblue"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:layout_height="match_parent">
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintVertical_bias="1.0">
<ImageView <ImageView
android:layout_width="113dp"
android:layout_height="77dp" app:srcCompat="@drawable/logolarge"
android:id="@+id/imageView_loading_back" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="80dp" android:contentDescription="@string/todo"/>
<ProgressBar
style="?android:attr/progressBarStyle"
android:layout_width="95dp"
android:layout_height="95dp"
android:indeterminateTintMode="src_in"
android:indeterminateTint="#414e62"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="80dp"/>
<ImageView
android:layout_width="100dp"
android:layout_height="70dp" app:srcCompat="@drawable/logolarge"
android:id="@+id/imageView_loading" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="80dp" android:contentDescription="@string/todo"/>
<TextView
android:text="@string/projectName"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="#ffffff" android:layout_gravity="center_vertical|center_horizontal"
android:textStyle="bold" android:id="@+id/backsplash"
android:id="@+id/textView3" android:background="@mipmap/splashlogo"/>
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="16dp" <ImageView
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="35dp" android:layout_width="35dp"
android:layout_marginEnd="231dp" app:layout_constraintEnd_toEndOf="parent" android:layout_height="35dp" app:srcCompat="@drawable/loading"
app:layout_constraintHorizontal_bias="0.0"/> android:layout_centerInParent="true"
<TextView android:layout_gravity="bottom|center_horizontal"
android:text="@string/loadingText" android:layout_marginBottom="200px"
android:layout_width="wrap_content" android:id="@+id/imageView_loading_back"/>
android:layout_height="wrap_content" </FrameLayout>
android:textColor="#ffffff"
android:textStyle="bold"
android:id="@+id/notification" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginTop="50dp" android:layout_marginStart="76dp" android:layout_marginEnd="76dp"/>
</android.support.constraint.ConstraintLayout>
</FrameLayout> </FrameLayout>
<android.support.design.widget.FloatingActionButton <android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>

View File

@ -163,60 +163,26 @@
android:indeterminateOnly="true" android:indeterminateOnly="true"
android:progress="50" app:layout_constraintTop_toTopOf="parent" android:progress="50" app:layout_constraintTop_toTopOf="parent"
/> />
<android.support.constraint.ConstraintLayout
<FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:id="@+id/splashScreen" android:id="@+id/splashScreen"
android:background="@drawable/backgradient" android:background="@color/splashblue"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:layout_height="match_parent">
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintVertical_bias="1.0">
<ImageView <ImageView
android:layout_width="113dp"
android:layout_height="77dp" app:srcCompat="@drawable/logolarge"
android:id="@+id/imageView_loading_back" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="80dp" android:contentDescription="@string/todo"/>
<ProgressBar
style="?android:attr/progressBarStyle"
android:layout_width="95dp"
android:layout_height="95dp"
android:indeterminateTintMode="src_in"
android:indeterminateTint="#414e62"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="80dp"/>
<ImageView
android:layout_width="100dp"
android:layout_height="70dp" app:srcCompat="@drawable/logolarge"
android:id="@+id/imageView_loading" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="80dp" android:contentDescription="@string/todo"/>
<TextView
android:text="@string/projectName"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="#ffffff" android:layout_gravity="center_vertical|center_horizontal"
android:textStyle="bold" android:id="@+id/backsplash"
android:id="@+id/textView3" android:background="@mipmap/splashlogo"/>
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="16dp" <ImageView
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="35dp" android:layout_width="35dp"
android:layout_marginEnd="231dp" app:layout_constraintEnd_toEndOf="parent" android:layout_height="35dp" app:srcCompat="@drawable/loading"
app:layout_constraintHorizontal_bias="0.0"/> android:layout_centerInParent="true"
<TextView android:layout_gravity="bottom|center_horizontal"
android:text="@string/loadingText" android:layout_marginBottom="200px"
android:layout_width="wrap_content" android:id="@+id/imageView_loading_back"/>
android:layout_height="wrap_content" </FrameLayout>
android:textColor="#ffffff"
android:textStyle="bold"
android:id="@+id/notification" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginTop="50dp" android:layout_marginStart="76dp" android:layout_marginEnd="76dp"/>
</android.support.constraint.ConstraintLayout>
</FrameLayout> </FrameLayout>
<android.support.design.widget.FloatingActionButton <android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@ -5,7 +5,7 @@
<item name="colorPrimary">#f2f2f2</item> <item name="colorPrimary">#f2f2f2</item>
<item name="colorPrimaryDark">#f2f2f2</item> <item name="colorPrimaryDark">#f2f2f2</item>
<item name="colorAccent">#f2f2f2</item> <item name="colorAccent">#f2f2f2</item>
<item name="android:windowBackground">@drawable/backgradient</item> <item name="android:windowBackground">@drawable/backsplash</item>
<item name="android:windowLightStatusBar">true</item> <item name="android:windowLightStatusBar">true</item>
</style> </style>
</resources> </resources>

View File

@ -4,6 +4,7 @@
<color name="colorPrimaryDark">#000000</color> <color name="colorPrimaryDark">#000000</color>
<color name="colorAccent">#000000</color> <color name="colorAccent">#000000</color>
<color name="blue">#0066FF</color> <color name="blue">#0066FF</color>
<color name="splashblue">#4d88ff</color>
<color name="holo_gray">#b3b3b3</color> <color name="holo_gray">#b3b3b3</color>
<color name="header">#212f45</color> <color name="header">#212f45</color>
</resources> </resources>

View File

@ -5,7 +5,7 @@
<string name="errorTiyle">\u0020\u0020\u0020Opps! Some Thing Went Wrong</string> <string name="errorTiyle">\u0020\u0020\u0020Opps! Some Thing Went Wrong</string>
<string name="todo">TODO</string> <string name="todo">TODO</string>
<string name="projectName">Genesis Search Engine</string> <string name="projectName">Genesis Search Engine</string>
<string name="loadingText">Loading Please Wait</string> <string name="loadingText">Online Freedom</string>
<string name="reload">Reload</string> <string name="reload">Reload</string>
<string name="internetErrorMessage">These might be the problems you are facing \n\n• Webpage or Website might be down \n• <string name="internetErrorMessage">These might be the problems you are facing \n\n• Webpage or Website might be down \n•
Your Internet connection might be poor \n• You might be using a proxy \n• Website might be blocked by firewall Your Internet connection might be poor \n• You might be using a proxy \n• Website might be blocked by firewall

View File

@ -6,7 +6,7 @@
<item name="colorPrimary">#f9f9f9</item> <item name="colorPrimary">#f9f9f9</item>
<item name="colorPrimaryDark">#f9f9f9</item> <item name="colorPrimaryDark">#f9f9f9</item>
<item name="colorAccent">#f9f9f9</item> <item name="colorAccent">#f9f9f9</item>
<item name="android:windowBackground">@drawable/backgradient</item> <item name="android:windowBackground">@drawable/backsplash</item>
<item name="android:statusBarColor">#000000</item> <item name="android:statusBarColor">#000000</item>
</style> </style>