diff --git a/app/build.gradle b/app/build.gradle index 4cdc6400..90771f2d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,7 +4,7 @@ apply plugin: 'maven' apply plugin: 'io.fabric' ext { - geckoviewChannel = "nightly" + geckoviewChannel = "" geckoviewVersion = "64.0.20180927100037" } @@ -43,26 +43,31 @@ android { flavorDimensions "abi" productFlavors { - arm { - versionCode 149 - versionName "145" + /*arm { + versionCode 152 + versionName "152" dimension "abi" - } + buildConfigField "String", "VARIANT", "\"arm\"" + }*/ aarch64 { - versionCode 150 - versionName "146" + versionCode 153 + versionName "153" dimension "abi" + buildConfigField "String", "VARIANT", "\"aarch64\"" } - x86_64 { - versionCode 151 - versionName "147" - dimension "abi" - } + /* x86 { - versionCode 148 - versionName "148" + versionCode 154 + versionName "154" 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 "cz.msebera.android:httpclient:4.4.1.2" - x86Implementation "org.mozilla.geckoview:geckoview-nightly-x86:68.0.20190405111221" - x86_64Implementation "org.mozilla.geckoview:geckoview-nightly-x86_64:68.0.20190405111221" - armImplementation "org.mozilla.geckoview:geckoview-nightly-armeabi-v7a:68.0.20190405111221" - aarch64Implementation "org.mozilla.geckoview:geckoview-nightly-arm64-v8a:68.0.20190405111221" + //x86Implementation "org.mozilla.geckoview:geckoview-x86:67.0.20190521210220" + //x86_64Implementation "org.mozilla.geckoview:geckoview-x86_64:67.0.20190521210220" + //armImplementation "org.mozilla.geckoview:geckoview-armeabi-v7a:67.0.20190521210220" + aarch64Implementation "org.mozilla.geckoview:geckoview-arm64-v8a:67.0.20190521210220" implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9' implementation 'com.crowdfire.cfalertdialog:cfalertdialog:1.1.0' diff --git a/app/src/main/java/com/darkweb/genesissearchengine/ProxySettings.java b/app/src/main/java/com/darkweb/genesissearchengine/ProxySettings.java deleted file mode 100644 index 1fc6d483..00000000 --- a/app/src/main/java/com/darkweb/genesissearchengine/ProxySettings.java +++ /dev/null @@ -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 + ""); - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/darkweb/genesissearchengine/WebkitProxy3.java b/app/src/main/java/com/darkweb/genesissearchengine/WebkitProxy3.java new file mode 100644 index 00000000..a8cfb434 --- /dev/null +++ b/app/src/main/java/com/darkweb/genesissearchengine/WebkitProxy3.java @@ -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; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/darkweb/genesissearchengine/admanager.java b/app/src/main/java/com/darkweb/genesissearchengine/admanager.java index e3473bbd..62e9bea3 100644 --- a/app/src/main/java/com/darkweb/genesissearchengine/admanager.java +++ b/app/src/main/java/com/darkweb/genesissearchengine/admanager.java @@ -1,6 +1,7 @@ package com.darkweb.genesissearchengine; import android.content.Context; +import android.util.Log; import com.google.android.gms.ads.AdListener; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.InterstitialAd; @@ -59,31 +60,40 @@ public class admanager { public void showAd(boolean isAdForced) { + Log.i("SHITSS","SHITSS 1" + " --- " + mInterstitialAd.isLoading() + " --- " + mInterstitialAd.isLoaded()); if(!mInterstitialAd.isLoading() && !mInterstitialAd.isLoaded()) { + Log.i("SHITSS","SHITSS 2"); mInterstitialAd.loadAd(new AdRequest.Builder().build()); if(isAdForced || adCount==0 || adCount%3==0) { + Log.i("SHITSS","SHITSS 3"); adCount = 0; } else { + Log.i("SHITSS","SHITSS 4"); adCount+=1; } } else { + Log.i("SHITSS","SHITSS 5"); if(mInterstitialAd.isLoaded()) { + Log.i("SHITSS","SHITSS 6"); if(isAdForced) { + Log.i("SHITSS","SHITSS 7"); mInterstitialAd.show(); adCount = 1; } else { + Log.i("SHITSS","SHITSS 8"); if(adCount%3==0) { + Log.i("SHITSS","SHITSS 9"); mInterstitialAd.show(); } adCount += 1; diff --git a/app/src/main/java/com/darkweb/genesissearchengine/application_controller.java b/app/src/main/java/com/darkweb/genesissearchengine/application_controller.java index e7704e93..6d106b9f 100644 --- a/app/src/main/java/com/darkweb/genesissearchengine/application_controller.java +++ b/app/src/main/java/com/darkweb/genesissearchengine/application_controller.java @@ -3,7 +3,10 @@ package com.darkweb.genesissearchengine; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; +import android.content.res.Configuration; +import android.content.res.Resources; import android.graphics.Color; +import android.graphics.Point; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; @@ -17,14 +20,15 @@ import android.text.Spanned; import android.text.style.ForegroundColorSpan; import android.util.Log; import android.util.Patterns; -import android.view.KeyEvent; -import android.view.View; -import android.view.Window; -import android.view.WindowManager; +import android.view.*; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.view.animation.RotateAnimation; import android.view.inputmethod.InputMethodManager; import android.webkit.*; import android.widget.*; import com.crashlytics.android.Crashlytics; +import com.example.myapplication.BuildConfig; import io.fabric.sdk.android.Fabric; import java.io.IOException; import java.net.MalformedURLException; @@ -37,6 +41,7 @@ import org.mozilla.geckoview.GeckoSession; import org.mozilla.geckoview.GeckoView; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static java.lang.Thread.sleep; public class application_controller extends AppCompatActivity @@ -48,7 +53,7 @@ public class application_controller extends AppCompatActivity private GeckoView webLoader; private ProgressBar progressBar; private ConstraintLayout requestFailure; - private ConstraintLayout splashScreen; + private FrameLayout splashScreen; private FloatingActionButton floatingButton; private Button reloadButton; private ImageButton homeButton; @@ -56,7 +61,7 @@ public class application_controller extends AppCompatActivity private LinearLayout topbar; private GeckoSession session1; private GeckoRuntime runtime1; - private String version_code = "3.0"; + private String version_code = "5.0"; private boolean wasBackPressed = false; private boolean isLoadedUrlSet = false; private boolean isGeckoURLLoadded = false; @@ -76,18 +81,27 @@ public class application_controller extends AppCompatActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - //initializeCrashlytics(); - initializeBackgroundColor(); - //setOrientation(); - setContentView(R.layout.application_view); - //orbot_manager.getInstance().initializeTorClient(this); - initializeStatus(); - initializeRunnable(); - initializeConnections(); - initializeWebViews(); - initializeView(); - initializeAds(); - checkSSLTextColor(); + + 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(); + initializeBackgroundColor(); + setContentView(R.layout.application_view); + orbot_manager.getInstance().initializeTorClient(this, webView1, webView2); + initializeStatus(); + initializeRunnable(); + initializeConnections(); + initializeWebViews(); + initializeView(); + initializeAds(); + checkSSLTextColor(); + initSplashScreen(); + } + else + { + setContentView(R.layout.invalid_setup); + message_manager.getInstance().abiError(this,Build.SUPPORTED_ABIS[0]); + } } public void setOrientation() @@ -95,6 +109,41 @@ public class application_controller extends AppCompatActivity 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() { 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); 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); } @@ -168,7 +217,7 @@ public class application_controller extends AppCompatActivity 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(); Log.i("PROBLEM25",""); progressBar.animate().setDuration(150).alpha(0f); @@ -214,9 +263,6 @@ public class application_controller extends AppCompatActivity requestFailure.animate().setDuration(0).alpha(0.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); loadURLAnimate(constants.backendUrl); initializeViewClients(); @@ -347,7 +393,7 @@ public class application_controller extends AppCompatActivity super.onPageFinished(view, url); handler = new Handler(); - int delay = 800; + int delay = 200; if(startPage>2) { delay = 0; @@ -382,9 +428,26 @@ public class application_controller extends AppCompatActivity status.hasApplicationLoaded = true; handler = new Handler(); - splashScreen.animate().alpha(0.0f).setStartDelay(500).setDuration(300).setListener(null).withEndAction((() -> splashScreen.setVisibility(View.GONE))); - versionChecker(); + splashScreen.animate().alpha(0.0f).setStartDelay(100).setDuration(300).setListener(null).withEndAction((() -> splashScreen.setVisibility(View.GONE))); + Handler popuphandler = new Handler(); + + popuphandler.postDelayed(new Runnable() { + @Override + public void run() { + if(status.hasApplicationLoaded && !isTutorialPopupShown) + { + if(!helperMethod.readPrefs("FirstTimeLoaded",application_controller.this)) { + message_manager.getInstance().welcomeMessage(application_controller.this, application_controller.this); + isTutorialPopupShown = true; + } + else if(buildconstants.build_type.equals("local")) + { + versionChecker(); + } + } + } + }, 2000); } @@ -393,21 +456,6 @@ public class application_controller extends AppCompatActivity } }, delay); - - - - Handler popuphandler = new Handler(); - - popuphandler.postDelayed(new Runnable() { - @Override - public void run() { - if(status.hasApplicationLoaded && !isTutorialPopupShown) - { - message_manager.getInstance().welcomeMessage(application_controller.this,application_controller.this); - isTutorialPopupShown = true; - } - } - }, 2000); } @Override @@ -814,7 +862,6 @@ class progressDelegate implements GeckoSession.ProgressDelegate public boolean onEditorClicked(TextView v, int actionId, KeyEvent event) { KeyboardUtils.hideKeyboard(application_controller.this); - Log.i("FUCKOFF : ",actionId+""); try { session1.stop(); @@ -870,16 +917,24 @@ class progressDelegate implements GeckoSession.ProgressDelegate } 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) { - 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(); } - return false; + return true; } diff --git a/app/src/main/java/com/darkweb/genesissearchengine/buildconstants.java b/app/src/main/java/com/darkweb/genesissearchengine/buildconstants.java new file mode 100644 index 00000000..d97d1013 --- /dev/null +++ b/app/src/main/java/com/darkweb/genesissearchengine/buildconstants.java @@ -0,0 +1,7 @@ +package com.darkweb.genesissearchengine; + +public class buildconstants +{ + //public static String build_type = "playstore"; + public static String build_type = "local"; +} diff --git a/app/src/main/java/com/darkweb/genesissearchengine/constants.java b/app/src/main/java/com/darkweb/genesissearchengine/constants.java index 255b2576..66eb3133 100644 --- a/app/src/main/java/com/darkweb/genesissearchengine/constants.java +++ b/app/src/main/java/com/darkweb/genesissearchengine/constants.java @@ -2,8 +2,8 @@ package com.darkweb.genesissearchengine; public class constants { - //public static String backendUrl = "https://boogle.store"; - public static String backendUrl = "http://msydqstlz2kzerdg.onion/"; + public static String backendUrl = "https://boogle.store"; + //public static String backendUrl = "http://msydqstlz2kzerdg.onion/"; public static String backendUrlHost = "boogle.store"; public static String frontEndUrlHost = "genesis.store"; public static String allowedHost = ".onion"; diff --git a/app/src/main/java/com/darkweb/genesissearchengine/helperMethod.java b/app/src/main/java/com/darkweb/genesissearchengine/helperMethod.java index 06d8b676..3b02280e 100644 --- a/app/src/main/java/com/darkweb/genesissearchengine/helperMethod.java +++ b/app/src/main/java/com/darkweb/genesissearchengine/helperMethod.java @@ -8,9 +8,12 @@ import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.preference.PreferenceManager; +import java.io.*; import java.util.List; import java.util.UUID; +import static android.content.Context.MODE_PRIVATE; + public class helperMethod { public static boolean isNetworkAvailable(Context application_context) @@ -54,6 +57,22 @@ public class helperMethod 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(); } diff --git a/app/src/main/java/com/darkweb/genesissearchengine/message_manager.java b/app/src/main/java/com/darkweb/genesissearchengine/message_manager.java index e02180ab..f9482780 100644 --- a/app/src/main/java/com/darkweb/genesissearchengine/message_manager.java +++ b/app/src/main/java/com/darkweb/genesissearchengine/message_manager.java @@ -2,7 +2,10 @@ package com.darkweb.genesissearchengine; import android.app.Application; import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; import android.graphics.Color; +import android.net.Uri; import com.crowdfire.cfalertdialog.CFAlertDialog; public class message_manager { @@ -17,8 +20,6 @@ public class message_manager { public void welcomeMessage(Context application_context, application_controller controller) { - if(!helperMethod.readPrefs("FirstTimeLoaded",application_context)) - { CFAlertDialog.Builder builder = new CFAlertDialog.Builder(application_context) .setDialogStyle(CFAlertDialog.CFAlertStyle.ALERT) .setTitle("Welcome | Deep Web Gateway") @@ -51,7 +52,6 @@ public class message_manager { helperMethod.savePrefs("FirstTimeLoaded",true,application_context); }); builder.show(); - } // Create Alert using Builder @@ -87,6 +87,32 @@ public class message_manager { 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) { CFAlertDialog.Builder builder = new CFAlertDialog.Builder(application_context) @@ -173,26 +199,20 @@ public class message_manager { builder.show(); } - public void versionWarning(Context application_context) - {/* - 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"; - Intent i = new Intent(Intent.ACTION_VIEW); - i.setData(Uri.parse(url)); - application_context.startActivity(i); - } - }) - .setNegativeButton(android.R.string.no, null) - .show(); - */ + public void versionWarning(Context application_context,String currentAbi) + { + CFAlertDialog.Builder builder = new CFAlertDialog.Builder(application_context) + .setDialogStyle(CFAlertDialog.CFAlertStyle.BOTTOM_SHEET) + .setTitle("Update Pending") + .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") + .addButton("Update", -1, -1, CFAlertDialog.CFAlertActionStyle.POSITIVE, CFAlertDialog.CFAlertActionAlignment.END, (dialog, which) -> { + Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://boogle.store/manual?abi="+currentAbi)); + application_context.startActivity(browserIntent); + }); + + builder.show(); } } diff --git a/app/src/main/java/com/darkweb/genesissearchengine/orbot_manager.java b/app/src/main/java/com/darkweb/genesissearchengine/orbot_manager.java index 2dc00fbc..8b5f2511 100644 --- a/app/src/main/java/com/darkweb/genesissearchengine/orbot_manager.java +++ b/app/src/main/java/com/darkweb/genesissearchengine/orbot_manager.java @@ -2,6 +2,7 @@ package com.darkweb.genesissearchengine; import android.content.Context; import android.util.Log; +import android.webkit.WebView; import com.msopentech.thali.android.toronionproxy.AndroidOnionProxyManager; import com.msopentech.thali.toronionproxy.OnionProxyManager; import org.mozilla.gecko.PrefsHelper; @@ -14,6 +15,8 @@ public class orbot_manager { boolean isLoading = false; OnionProxyManager onionProxyManager = null; Context applicationContext = null; + WebView view1=null; + WebView view2=null; public static orbot_manager getInstance() { return ourInstance; @@ -27,7 +30,7 @@ public class orbot_manager { if(!status.isTorInitialized) { message_manager.getInstance().startingOrbotInfo(application_context); - initializeTorClient(application_context); + initializeTorClient(application_context,view1,view2); return false; } 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) { return; @@ -71,53 +79,50 @@ public class orbot_manager { { public void run() { - try - { - isLoading = true; - String fileStorageLocation = "torfiles"; - onionProxyManager = new AndroidOnionProxyManager(applicationContext, fileStorageLocation); - int totalSecondsPerTorStartup = 4 * 60; - int totalTriesPerTorStartup = 5; - try { - boolean ok = onionProxyManager.startWithRepeat(totalSecondsPerTorStartup, totalTriesPerTorStartup); - if (!ok) { - Log.i("TorTest", "Couldn't start Tor!"); - return; - } - else + while (true) + { + try { - if(onionProxyManager.isRunning()) { - Log.i("My App", "Tor initialized on port " + onionProxyManager.getIPv4LocalHostSocksPort()); + isLoading = true; + String fileStorageLocation = "torfiles"; + + if(onionProxyManager!=null && onionProxyManager.isRunning()) + { + break; } + onionProxyManager = new AndroidOnionProxyManager(applicationContext, fileStorageLocation); + + int totalSecondsPerTorStartup = 4 * 60; + int totalTriesPerTorStartup = 5; + boolean ok = onionProxyManager.startWithRepeat(totalSecondsPerTorStartup, totalTriesPerTorStartup); + if (!ok) { + Log.i("TorTest", "Couldn't start Tor!"); + return; + } else { + if (onionProxyManager.isRunning()) { + Log.i("My App", "Tor initialized on port " + onionProxyManager.getIPv4LocalHostSocksPort()); + } + } + + while (!onionProxyManager.isRunning()) { + sleep(1000); + } + if (onionProxyManager.isRunning()) { + Log.i("My App", "Tor initialized on port " + onionProxyManager.getIPv4LocalHostSocksPort()); + status.port = onionProxyManager.getIPv4LocalHostSocksPort(); + initializeProxy(); + sleep(1500); + status.isTorInitialized = true; + break; + } + isLoading = false; + } catch (Exception ex) { + ex.printStackTrace(); + continue; } } - catch (Exception ex) { - ex.printStackTrace(); - } + } - while (!onionProxyManager.isRunning()) - { - sleep(1000); - } - if(onionProxyManager.isRunning()) - { - Log.i("My App", "Tor initialized on port " + onionProxyManager.getIPv4LocalHostSocksPort()); - status.port = onionProxyManager.getIPv4LocalHostSocksPort(); - initializeProxy(); - sleep(1500); - status.isTorInitialized = true; - } - isLoading = false; - } - catch (InterruptedException e) - { - isLoading = false; - e.printStackTrace(); - } catch (IOException e) { - isLoading = false; - e.printStackTrace(); - } - } }.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("privacy.donottrackheader.enabled",false); PrefsHelper.setPref("privacy.donottrackheader.value",1); - ProxySettings.setProxy(applicationContext, "127.0.0.1", status.port); } + } diff --git a/app/src/main/java/com/darkweb/genesissearchengine/webRequestHandler.java b/app/src/main/java/com/darkweb/genesissearchengine/webRequestHandler.java index 24da288e..5920dc06 100644 --- a/app/src/main/java/com/darkweb/genesissearchengine/webRequestHandler.java +++ b/app/src/main/java/com/darkweb/genesissearchengine/webRequestHandler.java @@ -9,6 +9,7 @@ import android.util.Log; import android.view.View; import android.webkit.WebView; import android.widget.EditText; +import android.widget.FrameLayout; import android.widget.ProgressBar; @@ -40,7 +41,7 @@ public class webRequestHandler private WebView[] view = new WebView[2]; private ProgressBar progressBar; private EditText searchbar; - private ConstraintLayout requestFailure; + private FrameLayout requestFailure; public boolean reloadError=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 RELOAD_ERROR =3; private application_controller controller; + private Context applictionContext; public static webRequestHandler getInstance() { 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.splash = splash; this.view[0] = view1; @@ -108,6 +111,7 @@ public class webRequestHandler } clientThread = new Thread(() -> { + String errorMessage = ""; try { Log.i("STEST : 5","1"); @@ -125,7 +129,8 @@ public class webRequestHandler } 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\"")) { Log.i("STEST99 : 9","1 : "+e.getMessage()); @@ -134,6 +139,8 @@ public class webRequestHandler e.printStackTrace(); } } + + }); 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"); + + 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();; try { SSLConnectionSocketFactory scsf = new SSLConnectionSocketFactory( @@ -193,10 +218,16 @@ public class webRequestHandler in.close(); 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.what = MESSAGE_UPDATE_TEXT_CHILD_THREAD; updateUIHandler.sendMessage(message); - } public void reportURL(String url) diff --git a/app/src/main/res/drawable-v24/backsplash.xml b/app/src/main/res/drawable-v24/backsplash.xml new file mode 100644 index 00000000..d4a659c2 --- /dev/null +++ b/app/src/main/res/drawable-v24/backsplash.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/backgradient.xml b/app/src/main/res/drawable/backgradient.xml index 0c3122cd..b9a65bf6 100644 --- a/app/src/main/res/drawable/backgradient.xml +++ b/app/src/main/res/drawable/backgradient.xml @@ -1,8 +1,8 @@ \ No newline at end of file diff --git a/app/src/main/res/drawable/backsplash.xml b/app/src/main/res/drawable/backsplash.xml new file mode 100644 index 00000000..d4a659c2 --- /dev/null +++ b/app/src/main/res/drawable/backsplash.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/loading.png b/app/src/main/res/drawable/loading.png new file mode 100644 index 00000000..8acd504e Binary files /dev/null and b/app/src/main/res/drawable/loading.png differ diff --git a/app/src/main/res/drawable/logosmall.png b/app/src/main/res/drawable/logosmall.png new file mode 100644 index 00000000..b1f7b842 Binary files /dev/null and b/app/src/main/res/drawable/logosmall.png differ diff --git a/app/src/main/res/layout-v26/application_view.xml b/app/src/main/res/layout-v26/application_view.xml index cca7f8ac..de80ba48 100644 --- a/app/src/main/res/layout-v26/application_view.xml +++ b/app/src/main/res/layout-v26/application_view.xml @@ -163,60 +163,26 @@ android:indeterminateOnly="true" android:progress="50" app:layout_constraintTop_toTopOf="parent" /> - + android:id="@+id/splashScreen" + android:background="@color/splashblue" + android:layout_height="match_parent"> - - - - - - - + android:layout_gravity="center_vertical|center_horizontal" + android:id="@+id/backsplash" + android:background="@mipmap/splashlogo"/> + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/application_view.xml b/app/src/main/res/layout/application_view.xml index cca7f8ac..de80ba48 100644 --- a/app/src/main/res/layout/application_view.xml +++ b/app/src/main/res/layout/application_view.xml @@ -163,60 +163,26 @@ android:indeterminateOnly="true" android:progress="50" app:layout_constraintTop_toTopOf="parent" /> - + android:id="@+id/splashScreen" + android:background="@color/splashblue" + android:layout_height="match_parent"> - - - - - - - + android:layout_gravity="center_vertical|center_horizontal" + android:id="@+id/backsplash" + android:background="@mipmap/splashlogo"/> + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/splashlogo.png b/app/src/main/res/mipmap-hdpi/splashlogo.png new file mode 100644 index 00000000..e9d9f444 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/splashlogo.png differ diff --git a/app/src/main/res/mipmap-hdpi/splashlogoclip.png b/app/src/main/res/mipmap-hdpi/splashlogoclip.png new file mode 100644 index 00000000..7d30276f Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/splashlogoclip.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round_v2.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round_v2.png new file mode 100644 index 00000000..f34591cf Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round_v2.png differ diff --git a/app/src/main/res/mipmap-mdpi/splashlogo.png b/app/src/main/res/mipmap-mdpi/splashlogo.png new file mode 100644 index 00000000..144e9aa1 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/splashlogo.png differ diff --git a/app/src/main/res/mipmap-mdpi/splashlogoclip.png b/app/src/main/res/mipmap-mdpi/splashlogoclip.png new file mode 100644 index 00000000..4ff35970 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/splashlogoclip.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round_v2.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round_v2.png new file mode 100644 index 00000000..f34591cf Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round_v2.png differ diff --git a/app/src/main/res/mipmap-xhdpi/splashlogo.png b/app/src/main/res/mipmap-xhdpi/splashlogo.png new file mode 100644 index 00000000..0a20e3a7 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/splashlogo.png differ diff --git a/app/src/main/res/mipmap-xhdpi/splashlogoclip.png b/app/src/main/res/mipmap-xhdpi/splashlogoclip.png new file mode 100644 index 00000000..8f4c4616 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/splashlogoclip.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round_v2.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round_v2.png new file mode 100644 index 00000000..f34591cf Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round_v2.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/splashlogo.png b/app/src/main/res/mipmap-xxhdpi/splashlogo.png new file mode 100644 index 00000000..15810763 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/splashlogo.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/splashlogoclip.png b/app/src/main/res/mipmap-xxhdpi/splashlogoclip.png new file mode 100644 index 00000000..02e3b806 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/splashlogoclip.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round_v2.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round_v2.png new file mode 100644 index 00000000..f34591cf Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round_v2.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/splashlogo.png b/app/src/main/res/mipmap-xxxhdpi/splashlogo.png new file mode 100644 index 00000000..df1c8ae3 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/splashlogo.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/splashlogoclip.png b/app/src/main/res/mipmap-xxxhdpi/splashlogoclip.png new file mode 100644 index 00000000..ead8020a Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/splashlogoclip.png differ diff --git a/app/src/main/res/values-v23/styles.xml b/app/src/main/res/values-v23/styles.xml index 7f847b50..778b1f39 100644 --- a/app/src/main/res/values-v23/styles.xml +++ b/app/src/main/res/values-v23/styles.xml @@ -5,7 +5,7 @@ #f2f2f2 #f2f2f2 #f2f2f2 - @drawable/backgradient + @drawable/backsplash true \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index ea237861..7bba0dcf 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -4,6 +4,7 @@ #000000 #000000 #0066FF + #4d88ff #b3b3b3 #212f45 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b097e60e..5cc46503 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,7 +5,7 @@ \u0020\u0020\u0020Opps! Some Thing Went Wrong TODO Genesis Search Engine - Loading Please Wait + Online Freedom Reload 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 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 968a3c6a..a50102fe 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -6,7 +6,7 @@ #f9f9f9 #f9f9f9 #f9f9f9 - @drawable/backgradient + @drawable/backsplash #000000