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