diff --git a/app/build.gradle b/app/build.gradle
index 6b2fd40..430ceef 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,15 +1,15 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 26
+ compileSdkVersion 28
defaultConfig {
applicationId "com.fanneng.android.web.demo"
multiDexEnabled true
- minSdkVersion 15
- targetSdkVersion 26
+ minSdkVersion 21
+ targetSdkVersion 28
versionCode 2
versionName "1.0.2"
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
@@ -29,9 +29,9 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation 'com.android.support.constraint:constraint-layout:1.1.2'
- compile 'com.android.support:appcompat-v7:26.1.0'
- compile 'com.nineoldandroids:library:2.4.0'
- compile 'com.coolindicator.sdk:coolindicator:1.0.0-beta'
- compile project(':superweb')
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
+ implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
+ implementation 'com.nineoldandroids:library:2.4.0'
+ implementation 'com.coolindicator.sdk:coolindicator:1.0.0-beta'
+ implementation project(':superweb')
}
diff --git a/app/src/main/assets/file/test.pdf b/app/src/main/assets/file/test.pdf
old mode 100755
new mode 100644
index 7fc877f..5042701
Binary files a/app/src/main/assets/file/test.pdf and b/app/src/main/assets/file/test.pdf differ
diff --git a/app/src/main/java/com/fanneng/android/web/demo/CommonActivity.java b/app/src/main/java/com/fanneng/android/web/demo/CommonActivity.java
index 123b3fa..e06172d 100755
--- a/app/src/main/java/com/fanneng/android/web/demo/CommonActivity.java
+++ b/app/src/main/java/com/fanneng/android/web/demo/CommonActivity.java
@@ -6,14 +6,15 @@
import android.graphics.PixelFormat;
import android.net.Uri;
import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import com.fanneng.android.web.demo.interactive.SlidingFragment;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
/**
* describe:公共加载fragment类
*
diff --git a/app/src/main/java/com/fanneng/android/web/demo/FileDisplayActivity.java b/app/src/main/java/com/fanneng/android/web/demo/FileDisplayActivity.java
index dfe78e2..a030d70 100755
--- a/app/src/main/java/com/fanneng/android/web/demo/FileDisplayActivity.java
+++ b/app/src/main/java/com/fanneng/android/web/demo/FileDisplayActivity.java
@@ -3,11 +3,12 @@
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
import com.fanneng.android.web.file.FileReaderView;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
/**
* describe:文件阅读类
*
diff --git a/app/src/main/java/com/fanneng/android/web/demo/FileListActivity.java b/app/src/main/java/com/fanneng/android/web/demo/FileListActivity.java
index c9dc9ba..647033d 100755
--- a/app/src/main/java/com/fanneng/android/web/demo/FileListActivity.java
+++ b/app/src/main/java/com/fanneng/android/web/demo/FileListActivity.java
@@ -3,9 +3,6 @@
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -17,6 +14,10 @@
import java.util.ArrayList;
import java.util.List;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
/**
* describe:功能列表
*
@@ -110,7 +111,7 @@ private String getFilePath(int position) {
break;
case 3:
- path = getFilesDir().getAbsolutePath() + File.separator +"test.pptx";
+ path = getFilesDir().getAbsolutePath() + File.separator +"demo.pptx";
break;
case 4:
diff --git a/app/src/main/java/com/fanneng/android/web/demo/JsFragment.java b/app/src/main/java/com/fanneng/android/web/demo/JsFragment.java
index d8f9b98..4e7da66 100755
--- a/app/src/main/java/com/fanneng/android/web/demo/JsFragment.java
+++ b/app/src/main/java/com/fanneng/android/web/demo/JsFragment.java
@@ -2,8 +2,6 @@
import android.os.Build;
import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresApi;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -13,6 +11,9 @@
import org.json.JSONObject;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+
/**
* describe:公共加载fragment类
*
diff --git a/app/src/main/java/com/fanneng/android/web/demo/MainActivity.java b/app/src/main/java/com/fanneng/android/web/demo/MainActivity.java
index ca5d56b..da5dae3 100644
--- a/app/src/main/java/com/fanneng/android/web/demo/MainActivity.java
+++ b/app/src/main/java/com/fanneng/android/web/demo/MainActivity.java
@@ -2,9 +2,6 @@
import android.content.Intent;
import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -13,6 +10,10 @@
import java.util.ArrayList;
import java.util.List;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
import static com.fanneng.android.web.demo.CommonActivity.TYPE_KEY;
/**
diff --git a/app/src/main/java/com/fanneng/android/web/demo/SuperWebX5Fragment.java b/app/src/main/java/com/fanneng/android/web/demo/SuperWebX5Fragment.java
index a935685..4b5db83 100755
--- a/app/src/main/java/com/fanneng/android/web/demo/SuperWebX5Fragment.java
+++ b/app/src/main/java/com/fanneng/android/web/demo/SuperWebX5Fragment.java
@@ -4,8 +4,10 @@
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
diff --git a/app/src/main/java/com/fanneng/android/web/demo/ToolbarActivity.java b/app/src/main/java/com/fanneng/android/web/demo/ToolbarActivity.java
index 5e1687b..06928a4 100755
--- a/app/src/main/java/com/fanneng/android/web/demo/ToolbarActivity.java
+++ b/app/src/main/java/com/fanneng/android/web/demo/ToolbarActivity.java
@@ -3,10 +3,6 @@
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.support.design.widget.AppBarLayout;
-import android.support.design.widget.CoordinatorLayout;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.view.View;
import android.widget.TextView;
@@ -18,6 +14,11 @@
import com.fanneng.android.web.demo.interactive.SlidingLayout;
import com.fanneng.android.web.demo.interactive.WebLayout;
import com.fanneng.android.web.progress.BaseIndicatorView;
+import com.google.android.material.appbar.AppBarLayout;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
/**
* describe:与Toolbar联动 需设置主题为AppTheme
diff --git a/app/src/main/java/com/fanneng/android/web/demo/VideoPlayActivity.java b/app/src/main/java/com/fanneng/android/web/demo/VideoPlayActivity.java
index 31c93f7..9003e35 100755
--- a/app/src/main/java/com/fanneng/android/web/demo/VideoPlayActivity.java
+++ b/app/src/main/java/com/fanneng/android/web/demo/VideoPlayActivity.java
@@ -4,13 +4,14 @@
import android.content.Intent;
import android.graphics.PixelFormat;
import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
import android.view.View;
import com.tencent.smtt.sdk.WebChromeClient;
import com.tencent.smtt.sdk.WebView;
import com.tencent.smtt.sdk.WebViewClient;
+import androidx.appcompat.app.AppCompatActivity;
+
/**
* describe:视频播放类
*
diff --git a/app/src/main/java/com/fanneng/android/web/demo/interactive/BottomNavigationViewBehavior.java b/app/src/main/java/com/fanneng/android/web/demo/interactive/BottomNavigationViewBehavior.java
index 822da4b..4703ad2 100755
--- a/app/src/main/java/com/fanneng/android/web/demo/interactive/BottomNavigationViewBehavior.java
+++ b/app/src/main/java/com/fanneng/android/web/demo/interactive/BottomNavigationViewBehavior.java
@@ -1,12 +1,14 @@
package com.fanneng.android.web.demo.interactive;
import android.content.Context;
-import android.support.design.widget.AppBarLayout;
-import android.support.design.widget.CoordinatorLayout;
-import android.support.v4.view.ViewCompat;
+
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
+import androidx.core.view.ViewCompat;
import android.util.AttributeSet;
import android.view.View;
+import com.google.android.material.appbar.AppBarLayout;
+
/**
* 与toolbar联动隐藏底部菜单
*/
diff --git a/app/src/main/java/com/fanneng/android/web/demo/interactive/CoolIndicatorLayout.java b/app/src/main/java/com/fanneng/android/web/demo/interactive/CoolIndicatorLayout.java
index cb1d158..188c50a 100755
--- a/app/src/main/java/com/fanneng/android/web/demo/interactive/CoolIndicatorLayout.java
+++ b/app/src/main/java/com/fanneng/android/web/demo/interactive/CoolIndicatorLayout.java
@@ -3,7 +3,6 @@
import android.app.Activity;
import android.content.Context;
import android.os.Build;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
@@ -12,6 +11,8 @@
import com.fanneng.android.web.demo.R;
import com.fanneng.android.web.progress.BaseIndicatorView;
+import androidx.annotation.Nullable;
+
public class CoolIndicatorLayout extends BaseIndicatorView {
diff --git a/app/src/main/java/com/fanneng/android/web/demo/interactive/SlidingLayout.java b/app/src/main/java/com/fanneng/android/web/demo/interactive/SlidingLayout.java
index 81ed8bb..dfe71c1 100755
--- a/app/src/main/java/com/fanneng/android/web/demo/interactive/SlidingLayout.java
+++ b/app/src/main/java/com/fanneng/android/web/demo/interactive/SlidingLayout.java
@@ -3,8 +3,8 @@
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Build;
-import android.support.v4.view.MotionEventCompat;
-import android.support.v4.view.ViewCompat;
+import androidx.core.view.MotionEventCompat;
+import androidx.core.view.ViewCompat;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
diff --git a/app/src/main/java/com/fanneng/android/web/demo/interactive/WebLayout.java b/app/src/main/java/com/fanneng/android/web/demo/interactive/WebLayout.java
index 629a1d2..2a70c69 100755
--- a/app/src/main/java/com/fanneng/android/web/demo/interactive/WebLayout.java
+++ b/app/src/main/java/com/fanneng/android/web/demo/interactive/WebLayout.java
@@ -1,8 +1,6 @@
package com.fanneng.android.web.demo.interactive;
import android.app.Activity;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.ViewGroup;
@@ -10,6 +8,9 @@
import com.fanneng.android.web.demo.R;
import com.tencent.smtt.sdk.WebView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
public class WebLayout implements IWebLayout {
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index d516ee0..e5a8965 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,13 +1,13 @@
-
+
-
-
+
diff --git a/app/src/main/res/layout/activity_video.xml b/app/src/main/res/layout/activity_video.xml
index da80110..9c0f3cf 100755
--- a/app/src/main/res/layout/activity_video.xml
+++ b/app/src/main/res/layout/activity_video.xml
@@ -1,7 +1,7 @@
-
+
-
+
diff --git a/app/src/main/res/layout/fragment_toolbar.xml b/app/src/main/res/layout/fragment_toolbar.xml
index 4c5a2fa..956e62b 100755
--- a/app/src/main/res/layout/fragment_toolbar.xml
+++ b/app/src/main/res/layout/fragment_toolbar.xml
@@ -1,21 +1,21 @@
-
-
-
-
+
-
+
diff --git a/app/src/main/res/layout/toorbar_main.xml b/app/src/main/res/layout/toorbar_main.xml
index 27ee2b0..4abc991 100755
--- a/app/src/main/res/layout/toorbar_main.xml
+++ b/app/src/main/res/layout/toorbar_main.xml
@@ -1,5 +1,5 @@
-
-
+
diff --git a/build.gradle b/build.gradle
index e6b32bc..6a1dd6a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,8 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.0.1'
+ classpath 'com.android.tools.build:gradle:3.2.1'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.61"
// NOTE: Do not place your application dependencies here; they belong
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index e3b6c4b..f3029a3 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
diff --git a/superweb/build.gradle b/superweb/build.gradle
index 0c0e08b..43eae87 100644
--- a/superweb/build.gradle
+++ b/superweb/build.gradle
@@ -1,21 +1,25 @@
apply plugin: 'com.android.library'
apply plugin: 'maven'
+apply plugin: 'kotlin-android'
+
+apply plugin: 'kotlin-android-extensions'
+
android {
- compileSdkVersion 26
+ compileSdkVersion 28
defaultConfig {
- minSdkVersion 14
- targetSdkVersion 26
+ minSdkVersion 21
+ targetSdkVersion 28
versionCode 2
versionName "1.0.2"
//X5兼容64位手机
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -29,9 +33,17 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- compile "com.android.support:support-v4:26.1.0"
- compile "com.android.support:design:26.1.0"
- compile files('libs/tbs_sdk_thirdapp_v3.6.0.1249_43610_sharewithdownload_withoutGame_obfs_20180608_114954.jar')
+ api "androidx.legacy:legacy-support-v4:1.0.0"
+ api "com.google.android.material:material:1.1.0-alpha02"
+ api files('libs/tbs_sdk_thirdapp_v3.6.0.1249_43610_sharewithdownload_withoutGame_obfs_20180608_114954.jar')
+ //For RxJava
+ api 'io.reactivex:rxandroid:1.2.1'
+ //For Retrofit
+ implementation 'com.squareup.retrofit2:retrofit:2.3.0'
+ implementation 'com.squareup.retrofit2:adapter-rxjava:2.3.0'
+ implementation 'com.squareup.okhttp3:logging-interceptor:3.9.0'
+ implementation 'com.google.code.gson:gson:2.8.5'
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.61"
}
//uploadArchives {
diff --git a/superweb/src/main/java/com/fanneng/android/web/IWebLayout.java b/superweb/src/main/java/com/fanneng/android/web/IWebLayout.java
index e4a663e..ae34e0b 100755
--- a/superweb/src/main/java/com/fanneng/android/web/IWebLayout.java
+++ b/superweb/src/main/java/com/fanneng/android/web/IWebLayout.java
@@ -1,11 +1,12 @@
package com.fanneng.android.web;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.view.ViewGroup;
import com.tencent.smtt.sdk.WebView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
/**
* 下拉回弹效果
*/
diff --git a/superweb/src/main/java/com/fanneng/android/web/NestedScrollSuperWebView.java b/superweb/src/main/java/com/fanneng/android/web/NestedScrollSuperWebView.java
index f323fc4..8979949 100755
--- a/superweb/src/main/java/com/fanneng/android/web/NestedScrollSuperWebView.java
+++ b/superweb/src/main/java/com/fanneng/android/web/NestedScrollSuperWebView.java
@@ -1,10 +1,10 @@
package com.fanneng.android.web;
import android.content.Context;
-import android.support.v4.view.MotionEventCompat;
-import android.support.v4.view.NestedScrollingChild;
-import android.support.v4.view.NestedScrollingChildHelper;
-import android.support.v4.view.ViewCompat;
+import androidx.core.view.MotionEventCompat;
+import androidx.core.view.NestedScrollingChild;
+import androidx.core.view.NestedScrollingChildHelper;
+import androidx.core.view.ViewCompat;
import android.util.AttributeSet;
import android.view.MotionEvent;
diff --git a/superweb/src/main/java/com/fanneng/android/web/SuperWebX5.java b/superweb/src/main/java/com/fanneng/android/web/SuperWebX5.java
index aa400d4..92ce360 100755
--- a/superweb/src/main/java/com/fanneng/android/web/SuperWebX5.java
+++ b/superweb/src/main/java/com/fanneng/android/web/SuperWebX5.java
@@ -2,12 +2,14 @@
import android.app.Activity;
import android.content.Intent;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.util.ArrayMap;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.collection.ArrayMap;
+import androidx.fragment.app.Fragment;
+
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
diff --git a/superweb/src/main/java/com/fanneng/android/web/SuperWebX5Config.java b/superweb/src/main/java/com/fanneng/android/web/SuperWebX5Config.java
index 2b9b419..3921910 100755
--- a/superweb/src/main/java/com/fanneng/android/web/SuperWebX5Config.java
+++ b/superweb/src/main/java/com/fanneng/android/web/SuperWebX5Config.java
@@ -3,13 +3,14 @@
import android.content.Context;
import android.os.AsyncTask;
import android.os.Build;
-import android.support.annotation.Nullable;
import com.fanneng.android.web.utils.LogUtils;
import com.tencent.smtt.sdk.CookieManager;
import com.tencent.smtt.sdk.CookieSyncManager;
import com.tencent.smtt.sdk.ValueCallback;
+import androidx.annotation.Nullable;
+
/**
* 配置类(设置/获取/清除cookies等操作)
diff --git a/superweb/src/main/java/com/fanneng/android/web/SuperWebX5FileProvider.java b/superweb/src/main/java/com/fanneng/android/web/SuperWebX5FileProvider.java
index 9f0c19e..ef33f00 100755
--- a/superweb/src/main/java/com/fanneng/android/web/SuperWebX5FileProvider.java
+++ b/superweb/src/main/java/com/fanneng/android/web/SuperWebX5FileProvider.java
@@ -1,6 +1,6 @@
package com.fanneng.android.web;
-import android.support.v4.content.FileProvider;
+import androidx.core.content.FileProvider;
/**
diff --git a/superweb/src/main/java/com/fanneng/android/web/client/DefaultChromeClient.java b/superweb/src/main/java/com/fanneng/android/web/client/DefaultChromeClient.java
index d538853..dd82358 100755
--- a/superweb/src/main/java/com/fanneng/android/web/client/DefaultChromeClient.java
+++ b/superweb/src/main/java/com/fanneng/android/web/client/DefaultChromeClient.java
@@ -9,11 +9,6 @@
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresApi;
-import android.support.design.widget.Snackbar;
-import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.widget.EditText;
@@ -30,6 +25,7 @@
import com.fanneng.android.web.utils.PermissionInterceptor;
import com.fanneng.android.web.utils.LogUtils;
import com.fanneng.android.web.utils.SuperWebX5Utils;
+import com.google.android.material.snackbar.Snackbar;
import com.tencent.smtt.export.external.interfaces.ConsoleMessage;
import com.tencent.smtt.export.external.interfaces.GeolocationPermissionsCallback;
import com.tencent.smtt.export.external.interfaces.JsPromptResult;
@@ -42,6 +38,11 @@
import java.lang.ref.WeakReference;
import java.util.List;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.appcompat.app.AlertDialog;
+
import static com.fanneng.android.web.file.ActionActivity.KEY_FROM_INTENTION;
public class DefaultChromeClient extends MiddleWareWebChromeBase implements FileUploadPop {
diff --git a/superweb/src/main/java/com/fanneng/android/web/client/DefaultWebClient.java b/superweb/src/main/java/com/fanneng/android/web/client/DefaultWebClient.java
index d2da2f5..dee5aae 100755
--- a/superweb/src/main/java/com/fanneng/android/web/client/DefaultWebClient.java
+++ b/superweb/src/main/java/com/fanneng/android/web/client/DefaultWebClient.java
@@ -11,7 +11,6 @@
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.AsyncTask;
-import android.support.v7.app.AlertDialog;
import android.text.TextUtils;
import android.view.KeyEvent;
@@ -33,6 +32,8 @@
import java.net.URISyntaxException;
import java.util.List;
+import androidx.appcompat.app.AlertDialog;
+
import static android.content.ContentValues.TAG;
/**
diff --git a/superweb/src/main/java/com/fanneng/android/web/client/DefaultWebCreator.java b/superweb/src/main/java/com/fanneng/android/web/client/DefaultWebCreator.java
index e4def5a..9989583 100755
--- a/superweb/src/main/java/com/fanneng/android/web/client/DefaultWebCreator.java
+++ b/superweb/src/main/java/com/fanneng/android/web/client/DefaultWebCreator.java
@@ -2,8 +2,6 @@
import android.app.Activity;
import android.graphics.Color;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
@@ -19,6 +17,9 @@
import com.fanneng.android.web.utils.SuperWebX5Utils;
import com.tencent.smtt.sdk.WebView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
public class DefaultWebCreator implements WebCreator {
diff --git a/superweb/src/main/java/com/fanneng/android/web/client/WebChromeClientWrapper.java b/superweb/src/main/java/com/fanneng/android/web/client/WebChromeClientWrapper.java
index dc752ff..984f3bc 100755
--- a/superweb/src/main/java/com/fanneng/android/web/client/WebChromeClientWrapper.java
+++ b/superweb/src/main/java/com/fanneng/android/web/client/WebChromeClientWrapper.java
@@ -4,7 +4,6 @@
import android.net.Uri;
import android.os.Build;
import android.os.Message;
-import android.support.annotation.RequiresApi;
import android.util.Log;
import android.view.View;
@@ -21,6 +20,8 @@
import java.lang.reflect.Method;
+import androidx.annotation.RequiresApi;
+
public class WebChromeClientWrapper extends WebChromeClient {
protected WebChromeClient mRealWebChromeClient;
diff --git a/superweb/src/main/java/com/fanneng/android/web/client/WebSecurityCheckLogic.java b/superweb/src/main/java/com/fanneng/android/web/client/WebSecurityCheckLogic.java
index bc539c7..f9f7021 100755
--- a/superweb/src/main/java/com/fanneng/android/web/client/WebSecurityCheckLogic.java
+++ b/superweb/src/main/java/com/fanneng/android/web/client/WebSecurityCheckLogic.java
@@ -1,10 +1,11 @@
package com.fanneng.android.web.client;
-import android.support.v4.util.ArrayMap;
import com.fanneng.android.web.SuperWebX5;
import com.tencent.smtt.sdk.WebView;
+import androidx.collection.ArrayMap;
+
public interface WebSecurityCheckLogic {
void dealHoneyComb(WebView view);
diff --git a/superweb/src/main/java/com/fanneng/android/web/client/WebSecurityControllerImpl.java b/superweb/src/main/java/com/fanneng/android/web/client/WebSecurityControllerImpl.java
index cada65f..5b300df 100755
--- a/superweb/src/main/java/com/fanneng/android/web/client/WebSecurityControllerImpl.java
+++ b/superweb/src/main/java/com/fanneng/android/web/client/WebSecurityControllerImpl.java
@@ -1,11 +1,12 @@
package com.fanneng.android.web.client;
import android.os.Build;
-import android.support.v4.util.ArrayMap;
import com.fanneng.android.web.SuperWebX5;
import com.tencent.smtt.sdk.WebView;
+import androidx.collection.ArrayMap;
+
public class WebSecurityControllerImpl implements WebSecurityController {
diff --git a/superweb/src/main/java/com/fanneng/android/web/client/WebSecurityLogicImpl.java b/superweb/src/main/java/com/fanneng/android/web/client/WebSecurityLogicImpl.java
index 96513c3..521bbb4 100755
--- a/superweb/src/main/java/com/fanneng/android/web/client/WebSecurityLogicImpl.java
+++ b/superweb/src/main/java/com/fanneng/android/web/client/WebSecurityLogicImpl.java
@@ -2,12 +2,13 @@
import android.annotation.TargetApi;
import android.os.Build;
-import android.support.v4.util.ArrayMap;
import com.fanneng.android.web.SuperWebX5;
import com.fanneng.android.web.SuperWebX5Config;
import com.tencent.smtt.sdk.WebView;
+import androidx.collection.ArrayMap;
+
public class WebSecurityLogicImpl implements WebSecurityCheckLogic {
public static WebSecurityLogicImpl getInstance() {
diff --git a/superweb/src/main/java/com/fanneng/android/web/file/ActionActivity.java b/superweb/src/main/java/com/fanneng/android/web/file/ActionActivity.java
index ded40a7..175d6d8 100755
--- a/superweb/src/main/java/com/fanneng/android/web/file/ActionActivity.java
+++ b/superweb/src/main/java/com/fanneng/android/web/file/ActionActivity.java
@@ -7,9 +7,6 @@
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresApi;
import com.fanneng.android.web.utils.LogUtils;
import com.fanneng.android.web.utils.SuperWebX5Utils;
@@ -17,6 +14,10 @@
import java.io.File;
import java.util.Arrays;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+
import static android.provider.MediaStore.EXTRA_OUTPUT;
import static com.fanneng.android.web.file.ActionActivity.Action.ACTION_CAMERA;
import static com.fanneng.android.web.file.FileUpLoadChooserImpl.REQUEST_CODE;
diff --git a/superweb/src/main/java/com/fanneng/android/web/file/DefaultDownLoaderImpl.java b/superweb/src/main/java/com/fanneng/android/web/file/DefaultDownLoaderImpl.java
index ac026bf..a8d67ff 100755
--- a/superweb/src/main/java/com/fanneng/android/web/file/DefaultDownLoaderImpl.java
+++ b/superweb/src/main/java/com/fanneng/android/web/file/DefaultDownLoaderImpl.java
@@ -8,9 +8,10 @@
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.content.ContextCompat;
-import android.support.v7.app.AlertDialog;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.core.content.ContextCompat;
import android.text.TextUtils;
import com.fanneng.android.web.utils.DefaultMsgConfig;
diff --git a/superweb/src/main/java/com/fanneng/android/web/file/FileUpLoadChooserImpl.java b/superweb/src/main/java/com/fanneng/android/web/file/FileUpLoadChooserImpl.java
index a4b7087..5cbf698 100755
--- a/superweb/src/main/java/com/fanneng/android/web/file/FileUpLoadChooserImpl.java
+++ b/superweb/src/main/java/com/fanneng/android/web/file/FileUpLoadChooserImpl.java
@@ -8,9 +8,10 @@
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.content.ContextCompat;
-import android.support.v7.app.AlertDialog;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.core.content.ContextCompat;
import android.text.TextUtils;
import com.fanneng.android.web.utils.DefaultMsgConfig;
diff --git a/superweb/src/main/java/com/fanneng/android/web/file/Notify.java b/superweb/src/main/java/com/fanneng/android/web/file/Notify.java
index f8b2715..f48b5eb 100755
--- a/superweb/src/main/java/com/fanneng/android/web/file/Notify.java
+++ b/superweb/src/main/java/com/fanneng/android/web/file/Notify.java
@@ -6,7 +6,7 @@
import android.app.PendingIntent;
import android.content.Context;
import android.os.SystemClock;
-import android.support.v4.app.NotificationCompat;
+import androidx.core.app.NotificationCompat;
public class Notify {
@@ -114,7 +114,8 @@ public boolean hasDeleteContent() {
}
public void setDelecte(PendingIntent intent) {
- cBuilder.mNotification.deleteIntent = intent;
+// cBuilder.mNotification.deleteIntent = intent;
+ cBuilder.build().deleteIntent = intent;
}
public void setProgressFinish(String content, PendingIntent pendingIntent) {
diff --git a/superweb/src/main/java/com/fanneng/android/web/js/JsInterfaceHolder.java b/superweb/src/main/java/com/fanneng/android/web/js/JsInterfaceHolder.java
index 26d0088..9815a50 100755
--- a/superweb/src/main/java/com/fanneng/android/web/js/JsInterfaceHolder.java
+++ b/superweb/src/main/java/com/fanneng/android/web/js/JsInterfaceHolder.java
@@ -1,6 +1,7 @@
package com.fanneng.android.web.js;
-import android.support.v4.util.ArrayMap;
+
+import androidx.collection.ArrayMap;
public interface JsInterfaceHolder {
diff --git a/superweb/src/main/java/com/fanneng/android/web/js/JsInterfaceHolderImpl.java b/superweb/src/main/java/com/fanneng/android/web/js/JsInterfaceHolderImpl.java
index ab34641..7f7a80b 100755
--- a/superweb/src/main/java/com/fanneng/android/web/js/JsInterfaceHolderImpl.java
+++ b/superweb/src/main/java/com/fanneng/android/web/js/JsInterfaceHolderImpl.java
@@ -1,6 +1,5 @@
package com.fanneng.android.web.js;
-import android.support.v4.util.ArrayMap;
import android.util.Log;
import com.fanneng.android.web.SuperWebX5;
@@ -9,6 +8,8 @@
import java.util.Map;
import java.util.Set;
+import androidx.collection.ArrayMap;
+
public class JsInterfaceHolderImpl extends JsBaseInterfaceHolder {
public static JsInterfaceHolderImpl getJsInterfaceHolder(WebView webView, SuperWebX5.SecurityType securityType) {
diff --git a/superweb/src/main/java/com/fanneng/android/web/js/QuickCallJs.java b/superweb/src/main/java/com/fanneng/android/web/js/QuickCallJs.java
index 8396742..cad39b9 100755
--- a/superweb/src/main/java/com/fanneng/android/web/js/QuickCallJs.java
+++ b/superweb/src/main/java/com/fanneng/android/web/js/QuickCallJs.java
@@ -1,9 +1,10 @@
package com.fanneng.android.web.js;
import android.os.Build;
-import android.support.annotation.RequiresApi;
import android.webkit.ValueCallback;
+import androidx.annotation.RequiresApi;
+
public interface QuickCallJs {
@RequiresApi(Build.VERSION_CODES.KITKAT)
void quickCallJs(String method, ValueCallback callback, String... params);
diff --git a/superweb/src/main/java/com/fanneng/android/web/net/DownloadApi.kt b/superweb/src/main/java/com/fanneng/android/web/net/DownloadApi.kt
new file mode 100644
index 0000000..dde9417
--- /dev/null
+++ b/superweb/src/main/java/com/fanneng/android/web/net/DownloadApi.kt
@@ -0,0 +1,20 @@
+package com.fanneng.android.web.net
+
+import okhttp3.ResponseBody
+import retrofit2.http.GET
+import retrofit2.http.Streaming
+import retrofit2.http.Url
+import rx.Observable
+
+/**
+ * 项目 : SuperWeb
+ * 作者 : Chuckifan
+ * 时间 : 2019/1/8 17:36
+ * 内容 :
+ */
+interface DownloadApi{
+
+ @GET
+ @Streaming
+ fun download(@Url url:String): Observable
+}
\ No newline at end of file
diff --git a/superweb/src/main/java/com/fanneng/android/web/progress/BaseIndicatorView.java b/superweb/src/main/java/com/fanneng/android/web/progress/BaseIndicatorView.java
index 695afc3..090a1a3 100755
--- a/superweb/src/main/java/com/fanneng/android/web/progress/BaseIndicatorView.java
+++ b/superweb/src/main/java/com/fanneng/android/web/progress/BaseIndicatorView.java
@@ -1,10 +1,11 @@
package com.fanneng.android.web.progress;
import android.content.Context;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.widget.FrameLayout;
+import androidx.annotation.Nullable;
+
/**
* 进度条基类
*/
diff --git a/superweb/src/main/java/com/fanneng/android/web/progress/WebProgress.java b/superweb/src/main/java/com/fanneng/android/web/progress/WebProgress.java
index fcefebb..91e188c 100755
--- a/superweb/src/main/java/com/fanneng/android/web/progress/WebProgress.java
+++ b/superweb/src/main/java/com/fanneng/android/web/progress/WebProgress.java
@@ -7,7 +7,6 @@
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.LinearInterpolator;
@@ -16,6 +15,8 @@
import com.fanneng.android.web.utils.LogUtils;
import com.fanneng.android.web.utils.SuperWebX5Utils;
+import androidx.annotation.Nullable;
+
public class WebProgress extends BaseIndicatorView implements BaseProgressSpec {
diff --git a/superweb/src/main/java/com/fanneng/android/web/utils/DocumentHelper.kt b/superweb/src/main/java/com/fanneng/android/web/utils/DocumentHelper.kt
new file mode 100644
index 0000000..2aacb42
--- /dev/null
+++ b/superweb/src/main/java/com/fanneng/android/web/utils/DocumentHelper.kt
@@ -0,0 +1,120 @@
+package com.fanneng.android.web.utils
+
+import android.util.Log
+import androidx.annotation.WorkerThread
+import com.fanneng.android.web.net.DownloadApi
+import okhttp3.OkHttpClient
+import okhttp3.logging.HttpLoggingInterceptor
+import retrofit2.Retrofit
+import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory
+import rx.Observable
+import rx.exceptions.Exceptions
+import rx.schedulers.Schedulers
+import java.io.File
+
+/**
+ * 项目 : SuperWeb
+ * 作者 : Chuckifan
+ * 时间 : 2019/1/8 17:34
+ * 内容 :
+ */
+class DocumentHelper {
+ private val retrofit: Retrofit
+ private val api: DownloadApi
+
+ init {
+ retrofit = Retrofit.Builder()
+ .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
+ .client(createClient())
+ .baseUrl("http://www.baidu.com/")
+ .build()
+
+ api = retrofit.create(DownloadApi::class.java)
+
+
+ }
+
+ @WorkerThread
+ fun loadDocument(url: String, parentPath: String, fileName: String) = Observable
+ .just(url)
+ .concatMap {
+ val cachePath = loadDocumentFromCache(parentPath + fileName)
+ if (null != cachePath) {
+ Observable.just(cachePath)
+ } else {
+ downloadFile(url, parentPath, fileName)
+ }
+ }
+
+ private fun loadDocumentFromCache(filePath: String): String? {
+ val file = File(filePath)
+
+ return if (file.isFile && file.exists()) {
+ file.absolutePath
+ } else {
+ null
+ }
+
+
+ }
+
+ private fun downloadFile(url: String, parentPath: String, fileName: String) =
+ api.download(url)
+ .subscribeOn(Schedulers.io())
+ .observeOn(Schedulers.io())
+ .concatMap {
+ val file = saveFile(it.bytes(), parentPath, fileName)
+ file ?: Exceptions.propagate(NullPointerException("save file failed"))
+ Observable.just(file!!.absolutePath)
+
+ }
+
+ private fun saveFile(bytes: ByteArray?, parentPath: String, fileName: String): File? {
+ return try {
+ bytes ?: throw NullPointerException("bytes should not be null")
+
+ if (!parentPath.endsWith("/")) throw IllegalArgumentException("parentPath should end with '/'. ")
+
+ val parentDir = File(parentPath)
+
+ if (!parentDir.exists()) parentDir.mkdir()
+
+
+ val file = File(parentPath + fileName)
+ if (file.exists())file.delete()
+ file.createNewFile()
+ if (!file.isFile) throw IllegalArgumentException("Illegal parentPath or fileName")
+ if (!file.canRead() || !file.canWrite()) throw IllegalArgumentException("No permission.")
+
+ file.writeBytes(bytes)
+ file
+ } catch (e: Exception) {
+ Log.e(TAG, "save file failed: ${e.message}")
+ e.printStackTrace()
+ null
+ }
+
+ }
+
+
+ private fun createClient(): OkHttpClient {
+ val logInterceptor = HttpLoggingInterceptor()
+ logInterceptor.level = HttpLoggingInterceptor.Level.BODY
+ return OkHttpClient.Builder().addInterceptor(logInterceptor)
+ .build()
+ }
+
+
+ companion object {
+ private const val TAG = "DocumentHelper"
+ private var instance: DocumentHelper? = null
+
+ @Synchronized
+ fun get(): DocumentHelper {
+ if (null == instance) {
+ instance = DocumentHelper()
+ }
+ return instance!!
+ }
+ }
+}
\ No newline at end of file
diff --git a/superweb/src/main/java/com/fanneng/android/web/utils/SuperWebX5Utils.java b/superweb/src/main/java/com/fanneng/android/web/utils/SuperWebX5Utils.java
index d5a3468..e5010c8 100755
--- a/superweb/src/main/java/com/fanneng/android/web/utils/SuperWebX5Utils.java
+++ b/superweb/src/main/java/com/fanneng/android/web/utils/SuperWebX5Utils.java
@@ -18,12 +18,13 @@
import android.os.StatFs;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
-import android.support.annotation.ColorInt;
-import android.support.design.widget.Snackbar;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.content.CursorLoader;
-import android.support.v4.content.FileProvider;
-import android.support.v4.os.EnvironmentCompat;
+
+import androidx.annotation.ColorInt;
+import androidx.core.content.ContextCompat;
+import androidx.core.content.FileProvider;
+import androidx.core.os.EnvironmentCompat;
+import androidx.loader.content.CursorLoader;
+
import android.telephony.TelephonyManager;
import android.text.SpannableString;
import android.text.Spanned;
@@ -37,6 +38,7 @@
import com.fanneng.android.web.SuperWebX5Config;
import com.fanneng.android.web.file.FileParcel;
+import com.google.android.material.snackbar.Snackbar;
import com.tencent.smtt.sdk.WebView;
import org.json.JSONArray;
diff --git a/superweb/src/main/res/xml/web_download_paths.xml b/superweb/src/main/res/xml/web_download_paths.xml
index 6017b36..9c759e5 100755
--- a/superweb/src/main/res/xml/web_download_paths.xml
+++ b/superweb/src/main/res/xml/web_download_paths.xml
@@ -2,5 +2,6 @@
+
\ No newline at end of file