├── YouzanX5Sample ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── drawable-xxhdpi │ │ │ ├── refresh.png │ │ │ └── ic_launcher.png │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ ├── xml │ │ │ └── network_security_config.xml │ │ ├── layout │ │ │ ├── fg_logout.xml │ │ │ ├── activity_login.xml │ │ │ ├── activity_placeholder.xml │ │ │ ├── activity_main.xml │ │ │ ├── activity_splash.xml │ │ │ └── fragment_youzan.xml │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ └── menu │ │ │ └── menu_youzan_share.xml │ │ ├── java │ │ └── com │ │ │ └── youzanyun │ │ │ └── sdk │ │ │ └── sample │ │ │ ├── cache │ │ │ ├── offline │ │ │ │ ├── Destroyable.java │ │ │ │ ├── ResourceInterceptor.java │ │ │ │ ├── OfflineServer.java │ │ │ │ ├── WebResourceResponseGenerator.java │ │ │ │ ├── Chain.java │ │ │ │ ├── DefaultRemoteResourceInterceptor.java │ │ │ │ ├── CacheRequest.java │ │ │ │ ├── ForceRemoteResourceInterceptor.java │ │ │ │ ├── DefaultWebResponseGenerator.java │ │ │ │ ├── MemResourceInterceptor.java │ │ │ │ ├── PhraseList.java │ │ │ │ ├── OfflineServerImpl.java │ │ │ │ └── DiskResourceInterceptor.java │ │ │ ├── config │ │ │ │ ├── FastCacheMode.java │ │ │ │ ├── MimeTypeFilter.java │ │ │ │ ├── DefaultMimeTypeFilter.java │ │ │ │ └── CacheConfig.java │ │ │ ├── cookie │ │ │ │ ├── CookieStrategy.java │ │ │ │ ├── CookieInterceptor.java │ │ │ │ ├── CookieStore.java │ │ │ │ ├── FastCookieManager.java │ │ │ │ ├── CookieJarImpl.java │ │ │ │ ├── SerializableCookie.java │ │ │ │ ├── MemoryCookieStore.java │ │ │ │ └── PersistentCookieStore.java │ │ │ ├── loader │ │ │ │ ├── ResourceLoader.java │ │ │ │ ├── SourceRequest.java │ │ │ │ ├── DefaultResourceLoader.java │ │ │ │ └── OkHttpResourceLoader.java │ │ │ ├── api │ │ │ │ └── FastOpenApi.java │ │ │ ├── WebViewCache.java │ │ │ ├── OfflineYouzanWebView.kt │ │ │ ├── okhttp │ │ │ │ └── OkHttpClientProvider.java │ │ │ ├── WebResource.java │ │ │ └── WebViewCacheImpl.java │ │ │ ├── helper │ │ │ ├── LoginHelper.kt │ │ │ └── YouzanHelper.kt │ │ │ ├── x5 │ │ │ ├── LoginActivity.kt │ │ │ ├── SplashActivity.kt │ │ │ ├── LogoutFragment.kt │ │ │ ├── YouzanActivity.kt │ │ │ ├── WebViewFragment.java │ │ │ ├── MainActivity.kt │ │ │ └── YouzanFragment.kt │ │ │ ├── config │ │ │ └── KaeConfig.kt │ │ │ └── MyApplication.kt │ │ └── AndroidManifest.xml ├── proguard-rules.pro └── build.gradle ├── YouzanBasicSample ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ ├── xml │ │ │ └── network_security_config.xml │ │ ├── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ ├── layout │ │ │ ├── activity_placeholder.xml │ │ │ ├── activity_main.xml │ │ │ └── fragment_youzan.xml │ │ └── menu │ │ │ └── menu_youzan_share.xml │ │ ├── java │ │ └── com │ │ │ └── youzanyun │ │ │ └── sdk │ │ │ └── sample │ │ │ └── basic │ │ │ ├── KaeConfig.java │ │ │ ├── YouzanActivity.java │ │ │ ├── MyApplication.java │ │ │ ├── MainActivity.java │ │ │ ├── WebViewFragment.java │ │ │ └── YouzanFragment.java │ │ └── AndroidManifest.xml ├── proguard-rules.pro └── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── settings.gradle ├── .gitignore ├── gradle.properties ├── gradlew.bat ├── README.md └── gradlew /YouzanX5Sample/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /YouzanBasicSample/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youzan/YouzanMobileSDK-Android/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/drawable-xxhdpi/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youzan/YouzanMobileSDK-Android/HEAD/YouzanX5Sample/src/main/res/drawable-xxhdpi/refresh.png -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youzan/YouzanMobileSDK-Android/HEAD/YouzanX5Sample/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youzan/YouzanMobileSDK-Android/HEAD/YouzanX5Sample/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youzan/YouzanMobileSDK-Android/HEAD/YouzanX5Sample/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /YouzanBasicSample/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youzan/YouzanMobileSDK-Android/HEAD/YouzanBasicSample/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /YouzanBasicSample/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youzan/YouzanMobileSDK-Android/HEAD/YouzanBasicSample/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youzan/YouzanMobileSDK-Android/HEAD/YouzanX5Sample/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youzan/YouzanMobileSDK-Android/HEAD/YouzanX5Sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /YouzanBasicSample/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youzan/YouzanMobileSDK-Android/HEAD/YouzanBasicSample/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /YouzanBasicSample/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youzan/YouzanMobileSDK-Android/HEAD/YouzanBasicSample/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /YouzanBasicSample/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youzan/YouzanMobileSDK-Android/HEAD/YouzanBasicSample/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youzan/YouzanMobileSDK-Android/HEAD/YouzanX5Sample/src/main/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/offline/Destroyable.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache.offline; 2 | 3 | /** 4 | * Created by Ryan 5 | * at 2019/9/27 6 | */ 7 | public interface Destroyable { 8 | 9 | void destroy(); 10 | } 11 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/config/FastCacheMode.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache.config; 2 | 3 | /** 4 | * Created by Ryan 5 | * at 2019/11/1 6 | */ 7 | public enum FastCacheMode { 8 | DEFAULT, 9 | NORMAL, 10 | FORCE 11 | } 12 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue Nov 15 10:26:55 CST 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/cookie/CookieStrategy.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache.cookie; 2 | 3 | /** 4 | * Created by Ryan 5 | * on 2019/10/29 6 | */ 7 | @Deprecated 8 | public enum CookieStrategy { 9 | MEMORY, 10 | PERSISTENT 11 | } 12 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /YouzanBasicSample/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/offline/ResourceInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache.offline; 2 | 3 | import com.youzanyun.sdk.sample.cache.WebResource; 4 | 5 | /** 6 | * Created by Ryan 7 | * at 2019/9/27 8 | */ 9 | public interface ResourceInterceptor { 10 | 11 | WebResource load(Chain chain); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/loader/ResourceLoader.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache.loader; 2 | 3 | 4 | import com.youzanyun.sdk.sample.cache.WebResource; 5 | 6 | /** 7 | * Created by Ryan 8 | * 2018/2/7 下午7:53 9 | */ 10 | public interface ResourceLoader { 11 | 12 | WebResource getResource(SourceRequest request); 13 | } 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/cookie/CookieInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache.cookie; 2 | 3 | import java.util.List; 4 | 5 | import okhttp3.Cookie; 6 | import okhttp3.HttpUrl; 7 | 8 | /** 9 | * Created by Ryan 10 | * on 2019/10/29 11 | */ 12 | public interface CookieInterceptor { 13 | 14 | List newCookies(HttpUrl url, List originCookies); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/offline/OfflineServer.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache.offline; 2 | 3 | import android.webkit.WebResourceResponse; 4 | 5 | /** 6 | * Created by Ryan 7 | * at 2019/9/27 8 | */ 9 | public interface OfflineServer { 10 | 11 | WebResourceResponse get(CacheRequest request); 12 | 13 | void addResourceInterceptor(ResourceInterceptor interceptor); 14 | 15 | void destroy(); 16 | } 17 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/offline/WebResourceResponseGenerator.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache.offline; 2 | 3 | import android.webkit.WebResourceResponse; 4 | 5 | import com.youzanyun.sdk.sample.cache.WebResource; 6 | 7 | 8 | /** 9 | * Created by Ryan 10 | * at 2019/10/8 11 | */ 12 | public interface WebResourceResponseGenerator { 13 | 14 | WebResourceResponse generate(WebResource resource, String urlMime); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/config/MimeTypeFilter.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache.config; 2 | 3 | /** 4 | * filter some mime type resources without caching. 5 | *

6 | * Created by Ryan 7 | * 2018/2/11 下午2:56 8 | */ 9 | public interface MimeTypeFilter { 10 | 11 | boolean isFilter(String mimeType); 12 | 13 | void addMimeType(String mimeType); 14 | 15 | void removeMimeType(String mimeType); 16 | 17 | void clear(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/api/FastOpenApi.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache.api; 2 | 3 | import com.youzanyun.sdk.sample.cache.config.CacheConfig; 4 | import com.youzanyun.sdk.sample.cache.config.FastCacheMode; 5 | import com.youzanyun.sdk.sample.cache.offline.ResourceInterceptor; 6 | 7 | /** 8 | * Created by Ryan 9 | * at 2019/11/1 10 | */ 11 | public interface FastOpenApi { 12 | 13 | void setCacheMode(FastCacheMode mode, CacheConfig cacheConfig); 14 | 15 | void addResourceInterceptor(ResourceInterceptor interceptor); 16 | } 17 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/WebViewCache.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache; 2 | 3 | import android.webkit.WebResourceRequest; 4 | import android.webkit.WebResourceResponse; 5 | 6 | import com.youzanyun.sdk.sample.cache.api.FastOpenApi; 7 | import com.youzanyun.sdk.sample.cache.offline.Destroyable; 8 | 9 | /** 10 | * Created by Ryan 11 | * 2018/2/7 下午5:06 12 | */ 13 | public interface WebViewCache extends FastOpenApi, Destroyable { 14 | 15 | WebResourceResponse getResource(WebResourceRequest request, int webViewCacheMode, String userAgent); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /YouzanBasicSample/src/main/java/com/youzanyun/sdk/sample/basic/KaeConfig.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.basic; 2 | 3 | /** 4 | * auther: liusaideng 5 | * created on : 2024/7/2 19:44 6 | * desc: 7 | */ 8 | public class KaeConfig { 9 | // public static String URL_MAIN = "https://shop139935761.m.youzan.com/wscshop/showcase/homepage?kdt_id=139743593"; 10 | // public static String URL_MAIN = "https://shop143703561.youzan.com/v2/showcase/homepage?alias=b0hB2PIg6s&dc_ps=3626055956015745029.300001"; 11 | public static String URL_MAIN = "https://shop141337475.m.youzan.com/wscshop/showcase/homepage?kdt_id=141145307"; 12 | 13 | } -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/cookie/CookieStore.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache.cookie; 2 | 3 | import java.util.List; 4 | 5 | import okhttp3.Cookie; 6 | import okhttp3.HttpUrl; 7 | 8 | /** 9 | * Created by Ryan 10 | * on 2019/10/29 11 | */ 12 | @Deprecated 13 | public interface CookieStore { 14 | 15 | void add(HttpUrl httpUrl, Cookie cookie); 16 | 17 | void add(HttpUrl httpUrl, List cookies); 18 | 19 | List get(HttpUrl httpUrl); 20 | 21 | List getCookies(); 22 | 23 | boolean remove(HttpUrl httpUrl, Cookie cookie); 24 | 25 | boolean removeAll(); 26 | } 27 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 youzanyun.com, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | include ':YouzanBasicSample',':YouzanX5Sample' 18 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/helper/LoginHelper.kt: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.helper 2 | 3 | import android.content.Context 4 | import android.content.SharedPreferences 5 | 6 | /** 7 | * auther: liusaideng 8 | * created on : 2023/7/17 7:39 PM 9 | * desc: 10 | */ 11 | object LoginHelper { 12 | private var sp: SharedPreferences? = null 13 | 14 | 15 | fun init(context: Context) { 16 | sp = context.getSharedPreferences("x5", Context.MODE_PRIVATE) 17 | } 18 | 19 | fun isLogin(): Boolean { 20 | return sp?.getBoolean("is_login", false) == true 21 | } 22 | 23 | fun setLogin(isLogin: Boolean) { 24 | sp?.edit()?.putBoolean("is_login", isLogin)?.apply() 25 | } 26 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Android template 3 | # Built application files 4 | *.apk 5 | *.ap_ 6 | 7 | # Files for the Dalvik VM 8 | *.dex 9 | 10 | # Java class files 11 | *.class 12 | 13 | # Generated files 14 | bin/ 15 | gen/ 16 | 17 | # Gradle files 18 | .gradle/ 19 | build/ 20 | 21 | #demo jar 22 | sample/libs/ 23 | 24 | # idea 25 | .idea/ 26 | *.iml 27 | 28 | # Local configuration file (sdk path, etc) 29 | local.properties 30 | 31 | # Proguard folder generated by Eclipse 32 | proguard/ 33 | 34 | # Log Files 35 | *.log 36 | 37 | # Android Studio Navigation editor temp files 38 | .navigation/ 39 | 40 | #infer 41 | infer-out/ 42 | 43 | .gradletasknamecache 44 | captures/ 45 | 46 | #debug jar 47 | /jar/debug 48 | 49 | YouzanSDKAndroidAPI/ 50 | 51 | #Local test repo 52 | repo/ 53 | core/project.properties 54 | 55 | demo/nativedemo/libs/ 56 | 57 | 58 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/layout/fg_logout.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 20 | -------------------------------------------------------------------------------- /YouzanBasicSample/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | #3F51B5 20 | #303F9F 21 | #FF4081 22 | 23 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/layout/activity_login.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 20 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/layout/activity_placeholder.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 22 | 23 | -------------------------------------------------------------------------------- /YouzanBasicSample/src/main/res/layout/activity_placeholder.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 22 | 23 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 有赞X5开店 19 | 清除记录 20 | 打开入口 21 | 页面加载中… 22 | 分享 23 | 24 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | #3F51B5 20 | #303F9F 21 | #FF4081 22 | #F5F5F5 23 | 24 | -------------------------------------------------------------------------------- /YouzanBasicSample/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 有赞Sample-basic 19 | 清除记录 20 | 打开入口 21 | 页面加载中… 22 | 分享 23 | 24 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/offline/Chain.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache.offline; 2 | 3 | 4 | import com.youzanyun.sdk.sample.cache.WebResource; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * Created by Ryan 10 | * at 2019/9/27 11 | */ 12 | public class Chain { 13 | 14 | private List mInterceptors; 15 | private int mIndex = -1; 16 | private CacheRequest mRequest; 17 | 18 | Chain(List interceptors) { 19 | mInterceptors = interceptors; 20 | } 21 | 22 | public WebResource process(CacheRequest request) { 23 | if (++mIndex >= mInterceptors.size()) { 24 | return null; 25 | } 26 | mRequest = request; 27 | ResourceInterceptor interceptor = mInterceptors.get(mIndex); 28 | return interceptor.load(this); 29 | } 30 | 31 | public CacheRequest getRequest() { 32 | return mRequest; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/helper/YouzanHelper.kt: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.helper 2 | 3 | import android.content.Context 4 | import com.youzan.androidsdk.YouzanSDK 5 | import com.youzan.androidsdk.YouzanToken 6 | import com.youzan.androidsdk.YzLoginCallback 7 | 8 | /** 9 | * auther: liusaideng 10 | * created on : 2023/7/18 10:12 AM 11 | * desc: 12 | */ 13 | object YouzanHelper { 14 | 15 | fun loginYouzan(context: Context, callback: (youzanToken: YouzanToken) -> Unit) { 16 | YouzanSDK.yzlogin( 17 | "31467761", 18 | "https://cdn.daddylab.com/Upload/android/20210113/021119/au9j4d6aed5xfweg.jpeg?w=1080&h=1080", 19 | "", 20 | "一百亿养乐多", 21 | "0", 22 | object : YzLoginCallback { 23 | override fun onSuccess(youzanToken: YouzanToken) { 24 | YouzanSDK.sync(context, youzanToken) 25 | callback.invoke(youzanToken) 26 | } 27 | 28 | override fun onFail(s: String) {} 29 | }) 30 | } 31 | } -------------------------------------------------------------------------------- /YouzanBasicSample/src/main/res/menu/menu_youzan_share.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 |

20 | 21 | 26 | 27 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /YouzanBasicSample/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/cache/offline/DefaultRemoteResourceInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.cache.offline; 2 | 3 | import android.content.Context; 4 | 5 | import com.youzanyun.sdk.sample.cache.WebResource; 6 | import com.youzanyun.sdk.sample.cache.loader.OkHttpResourceLoader; 7 | import com.youzanyun.sdk.sample.cache.loader.ResourceLoader; 8 | import com.youzanyun.sdk.sample.cache.loader.SourceRequest; 9 | 10 | /** 11 | * Created by Ryan 12 | * at 2019/9/27 13 | */ 14 | public class DefaultRemoteResourceInterceptor implements ResourceInterceptor { 15 | 16 | private ResourceLoader mResourceLoader; 17 | 18 | DefaultRemoteResourceInterceptor(Context context) { 19 | mResourceLoader = new OkHttpResourceLoader(context); 20 | } 21 | 22 | @Override 23 | public WebResource load(Chain chain) { 24 | CacheRequest request = chain.getRequest(); 25 | SourceRequest sourceRequest = new SourceRequest(request, true); 26 | WebResource resource = mResourceLoader.getResource(sourceRequest); 27 | if (resource != null) { 28 | return resource; 29 | } 30 | return chain.process(request); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/x5/LoginActivity.kt: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.x5 2 | 3 | import android.content.Intent 4 | import android.os.Bundle 5 | import android.support.v7.app.AppCompatActivity 6 | import android.view.View 7 | import com.youzan.androidsdk.YouzanSDK 8 | import com.youzan.androidsdk.YouzanToken 9 | import com.youzan.androidsdk.YzLoginCallback 10 | import com.youzanyun.sdk.sample.helper.LoginHelper 11 | import com.youzanyun.sdk.sample.helper.YouzanHelper 12 | import com.youzanyun.sdk.sample.x5.R 13 | 14 | class LoginActivity : AppCompatActivity() { 15 | override fun onCreate(savedInstanceState: Bundle?) { 16 | super.onCreate(savedInstanceState) 17 | setContentView(R.layout.activity_login) 18 | 19 | findViewById(R.id.login_tv).setOnClickListener { 20 | 21 | YouzanHelper.loginYouzan(this@LoginActivity) { 22 | LoginHelper.setLogin(false) 23 | Intent(this@LoginActivity, MainActivity::class.java).apply { 24 | this.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 25 | startActivity(this) 26 | this@LoginActivity.finish() 27 | } 28 | } 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/java/com/youzanyun/sdk/sample/config/KaeConfig.kt: -------------------------------------------------------------------------------- 1 | package com.youzanyun.sdk.sample.config 2 | 3 | /** 4 | * auther: liusaideng 5 | * created on : 2023/7Youz/17 4:16 PM 6 | * desc: 7 | */ 8 | object KaeConfig { 9 | // clientId 10 | const val S_CLIENT_ID = "0073bccbaf5369028a" 11 | // const val S_URL_MAIN = "https://shop156571076.m.youzan.com/wscshop/showcase/homepage?kdt_id=156378908" 12 | // const val S_URL_MAIN = "https://shop139935761.m.youzan.com/wscshop/showcase/homepage?kdt_id=139743593" 13 | // const val S_URL_MAIN = "https://shop143703561.youzan.com/v2/showcase/homepage?alias=b0hB2PIg6s&dc_ps=3626055956015745029.300001" 14 | const val S_URL_MAIN = "https://shop141337475.m.youzan.com/wscshop/showcase/homepage?kdt_id=141145307" 15 | 16 | 17 | // const val S_URL_MAIN = "https://shop122003905.m.youzan.com/v2/showcase/homepage?alias=I7OEE6dEc2&showRetailComps=1" 18 | ////// const val S_URL_MINE = "https://shop139935761.youzan.com/wscuser/membercenter?alias=Qn7FnnQwAB&reft=1715852464115&spm=f.131511492" 19 | // const val S_URL_MAIN = "https://shop16911610.m.youzan.com/wscshop/showcase/homepage?kdt_id=16719442" 20 | // const val S_URL_MAIN ="https://shop42618405.m.youzan.com/v2/showcase/homepage?kdt_id=42426237" 21 | } -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/menu/menu_youzan_share.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 21 | 26 | 27 | 32 | 33 | -------------------------------------------------------------------------------- /YouzanX5Sample/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 23 | 24 | 29 | 30 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2017 youzanyun.com, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # Project-wide Gradle settings. 18 | 19 | # IDE (e.g. Android Studio) users: 20 | # Gradle settings configured through the IDE *will override* 21 | # any settings specified in this file. 22 | 23 | # For more details on how to configure your build environment visit 24 | # http://www.gradle.org/docs/current/userguide/build_environment.html 25 | 26 | # Specifies the JVM arguments used for the daemon process. 27 | # The setting is particularly useful for tweaking memory settings. 28 | org.gradle.jvmargs=-Xmx1536m 29 | 30 | # When configured, Gradle will run in incubating parallel mode. 31 | # This option should only be used with decoupled projects. More details, visit 32 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 33 | # org.gradle.parallel=true 34 | -------------------------------------------------------------------------------- /YouzanBasicSample/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 |