commit 9abac35b823b195f5a3a6c507c0d8e703165e3bf Author: PH2 <1293456824@qq.com> Date: Fri May 21 15:49:23 2021 +0800 1、初始化项目信息 diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..41cc7d8 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1 + +* TODO: Describe initial release. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ba75c69 --- /dev/null +++ b/LICENSE @@ -0,0 +1 @@ +TODO: Add your license here. diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ed8d6e --- /dev/null +++ b/README.md @@ -0,0 +1,52 @@ +# 京东sdk的唤醒 +京东sdk在Flutter上的实现,通过它可以实现唤醒京东app打开京东任意的url,包括商品详情等功能。 + +## 使用需知 +[京东官方接入文档](https://union.jd.com/helpcenter/13246-13248-46117),在android和ios分别加入安全图片。 + +### ios + 在 Info.plist 文件中添加 + ```dart + LSApplicationQueriesSchemes + + openapp.jdmobile + jdlogin + + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + sdkback + 此处填入appkey + + + + ``` + +## 导入依赖 +```dart + import 'package:jdsdk/jdsdk.dart'; +``` + + +## 初始化 +```dart + + Jdsdk.init(appKey: '', appSecret: ''); +``` + + +## 打开京东任意URL +```dart + Jdsdk.openUrl( url: 'https://item.m.jd.com/product/100009963992.html'); +``` + + + + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..5496b0f --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,55 @@ +group 'com.jd.jdsdk' +version '1.0' + +buildscript { + repositories { + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:3.5.0' + } +} + +rootProject.allprojects { + repositories { + google() + jcenter() + } +} + +apply plugin: 'com.android.library' + +android { + compileSdkVersion 28 + + defaultConfig { + minSdkVersion 16 + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + lintOptions { + disable 'InvalidPackage' + } + + sourceSets{ + main{ + jniLibs.srcDirs = ['src/libs'] + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + dexOptions { + incremental true + } +} + +dependencies{ + //implementation files('src/libs/jdmasdk.jar') + compile fileTree(dir: 'libs', include: ['*.jar']) + implementation files('src/libs/JDSDK_h.jar') + implementation files('src/libs/cps_1.0.0.jar') +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..7be3d8b --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.jvmargs=-Xmx1536M +android.enableR8=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..01a286e --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..b8aeb88 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'jdsdk' diff --git a/android/src/libs/JDSDK_h.jar b/android/src/libs/JDSDK_h.jar new file mode 100755 index 0000000..dfeabc5 Binary files /dev/null and b/android/src/libs/JDSDK_h.jar differ diff --git a/android/src/libs/arm64-v8a/libCPS.so b/android/src/libs/arm64-v8a/libCPS.so new file mode 100755 index 0000000..ff07747 Binary files /dev/null and b/android/src/libs/arm64-v8a/libCPS.so differ diff --git a/android/src/libs/armeabi-v7a/libCPS.so b/android/src/libs/armeabi-v7a/libCPS.so new file mode 100755 index 0000000..37182ea Binary files /dev/null and b/android/src/libs/armeabi-v7a/libCPS.so differ diff --git a/android/src/libs/armeabi/libCPS.so b/android/src/libs/armeabi/libCPS.so new file mode 100755 index 0000000..e567bec Binary files /dev/null and b/android/src/libs/armeabi/libCPS.so differ diff --git a/android/src/libs/cps_1.0.0.jar b/android/src/libs/cps_1.0.0.jar new file mode 100755 index 0000000..72cf2bd Binary files /dev/null and b/android/src/libs/cps_1.0.0.jar differ diff --git a/android/src/libs/x86/libCPS.so b/android/src/libs/x86/libCPS.so new file mode 100755 index 0000000..b70f831 Binary files /dev/null and b/android/src/libs/x86/libCPS.so differ diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml new file mode 100644 index 0000000..85e354b --- /dev/null +++ b/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/android/src/main/java/com/jd/jdsdk/JDHelper.java b/android/src/main/java/com/jd/jdsdk/JDHelper.java new file mode 100644 index 0000000..cc07ffc --- /dev/null +++ b/android/src/main/java/com/jd/jdsdk/JDHelper.java @@ -0,0 +1,180 @@ +package com.jd.jdsdk; + +import android.app.Activity; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Handler; +import android.text.TextUtils; +import android.util.Log; +import android.widget.Toast; + +import com.jd.kepler.res.ApkResources; +import com.kepler.jd.Listener.AsyncInitListener; +import com.kepler.jd.Listener.OpenAppAction; +import com.kepler.jd.login.KeplerApiManager; +import com.kepler.jd.sdk.bean.KelperTask; +import com.kepler.jd.sdk.bean.KeplerAttachParameter; + +import org.json.JSONException; + +import java.lang.ref.WeakReference; +import java.util.Map; + +import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; +import io.flutter.plugin.common.PluginRegistry; + +public class JDHelper { + private static JDHelper jdHelper; +// private PluginRegistry.Registrar register; +// private ActivityPluginBinding binding; + private WeakReference mActivity; + KelperTask mKelperTask; + + Handler mHandler = new Handler(); + KeplerAttachParameter mKeplerAttachParameter = new KeplerAttachParameter();//这个是即时性参数 可以设置 + LoadingDialog dialog; + + + private Activity getActivity(){ + return this.mActivity.get(); +// if(null != register){ +// return register.activity(); +// }else if(null != binding){ +// return binding.getActivity(); +// } +// return null; + } + + private void setActivity(final Activity activity) { + if (null != activity) { + this.mActivity = new WeakReference<>(activity); + } + } + + OpenAppAction mOpenAppAction = new OpenAppAction() { + + @Override + public void onStatus(final int status, final String url) { + mHandler.post(new Runnable() { + @Override + public void run() { + if (status == OpenAppAction.OpenAppAction_start) {//开始状态未必一定执行, + dialogShow(); + }else { + mKelperTask = null; + dialogDiss(); + } + if(status == OpenAppAction.OpenAppAction_result_NoJDAPP) { + // Toast.makeText(getActivity(), "您未安装京东app,你可以手动打开以下链接地址:"+url+" ,code="+status, Toast.LENGTH_SHORT).show(); + }else if(status == OpenAppAction.OpenAppAction_result_BlackUrl){ + // Toast.makeText(getActivity(), "url不在白名单,你可以手动打开以下链接地址:"+url+" ,code="+status, Toast.LENGTH_SHORT).show(); + }else if(status == OpenAppAction.OpenAppAction_result_ErrorScheme){ + // Toast.makeText(getActivity(), "呼起协议异常"+" ,code="+status, Toast.LENGTH_SHORT).show(); + }else if(status == OpenAppAction.OpenAppAction_result_APP){ + + }else if(status == OpenAppAction.OpenAppAction_result_NetError){ + // Toast.makeText(getActivity(), ApkResources.getSingleton().getString("kepler_check_net")+" ,code="+status+" ,url="+url,Toast.LENGTH_SHORT).show(); + } + } + }); + } + }; + + private void dialogShow() { +// if (dialog == null) { + if (getActivity() != null && !getActivity().isFinishing()) { + dialog = new LoadingDialog(getActivity()); + dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { + @Override + public void onCancel(DialogInterface dialog) { + if (mKelperTask != null) {//取消 + mKelperTask.setCancel(true); + } + } + }); +// } + dialog.show(); + } + } + + private void dialogDiss() { + if(dialog!=null) + dialog.dismiss(); + } + + + //第一次调用getInstance register不能为空 +// public static JDHelper getInstance(final Context context){ +// if (jdHelper == null){ +// synchronized (JDHelper.class){ +// jdHelper = new JDHelper(); +// if (null != context) { +// jdHelper.mContext = context; +// } +// } +// } +// return jdHelper; +// } + + //第一次调用getInstance register不能为空 + public static JDHelper getInstance(ActivityPluginBinding binding){ + if (jdHelper == null){ + synchronized (JDHelper.class){ + jdHelper = new JDHelper(); + if(null != binding){ + jdHelper.setActivity(binding.getActivity()); + } + } + } else { + if (null != binding) jdHelper.setActivity(binding.getActivity()); + } + return jdHelper; + } + + + + + /** + * 初始化开普勒 + * @param call + * @param result + */ + public void initKepler(MethodCall call, MethodChannel.Result result){ + String appKey = call.argument("appKey"); + String appSecret = call.argument("appSecret"); + Log.d("flutter-taoke","initKepler"+getActivity()); + KeplerApiManager.asyncInitSdk(getActivity().getApplication(), appKey, appSecret, new AsyncInitListener() { + @Override + public void onSuccess() { + result.success(PluginResponse.success(null).toMap()); + } + + @Override + public void onFailure() { + String errorCode = "-1"; + String errorMsg = "初始化失败"; + result.success(new PluginResponse(errorCode, errorMsg, null).toMap()); + } + }); + } + + + /** + * 通过URL方式打开 + * @param call + * @param result + */ + public void openUrl(MethodCall call, MethodChannel.Result result){ + String url = call.argument("url"); + if(TextUtils.isEmpty(url)){ + return; + } + mKelperTask = KeplerApiManager.getWebViewService().openAppWebViewPage(getActivity(), + url, + mKeplerAttachParameter, + mOpenAppAction); + } + +} diff --git a/android/src/main/java/com/jd/jdsdk/JdsdkPlugin.java b/android/src/main/java/com/jd/jdsdk/JdsdkPlugin.java new file mode 100644 index 0000000..961d4cc --- /dev/null +++ b/android/src/main/java/com/jd/jdsdk/JdsdkPlugin.java @@ -0,0 +1,65 @@ +package com.jd.jdsdk; + +import android.util.Log; + +import io.flutter.embedding.engine.plugins.FlutterPlugin; +import io.flutter.embedding.engine.plugins.activity.ActivityAware; +import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding; +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; +import io.flutter.plugin.common.MethodChannel.MethodCallHandler; +import io.flutter.plugin.common.MethodChannel.Result; +import io.flutter.plugin.common.PluginRegistry.Registrar; + +/** JdsdkPlugin */ +public class JdsdkPlugin implements FlutterPlugin, MethodCallHandler, ActivityAware { + public static JDHelper mJDHelper; + private MethodChannel channel; + @Override + public void onAttachedToEngine( FlutterPluginBinding flutterPluginBinding) { +// mJDHelper = JDHelper.getInstance(flutterPluginBinding.getApplicationContext()); + channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "jdsdk"); + channel.setMethodCallHandler(this); + } + + @Override + public void onMethodCall( MethodCall call, Result result) { + if (call.method.equals("getPlatformVersion")) { + result.success("Android " + android.os.Build.VERSION.RELEASE); + } else if (call.method.equals("init")) { + mJDHelper.initKepler(call,result); + }else if (call.method.equals("openUrl")) { + Log.d("flutter-test","openUrl"); + mJDHelper.openUrl(call,result); + }else { + result.notImplemented(); + } + } + + @Override + public void onDetachedFromEngine( FlutterPluginBinding binding) { + channel.setMethodCallHandler(null); + mJDHelper = null; + } + + @Override + public void onAttachedToActivity( ActivityPluginBinding binding) { + Log.d("flutter-taoke","onAttachedToActivity"+binding); + mJDHelper = JDHelper.getInstance(binding); + } + + @Override + public void onDetachedFromActivityForConfigChanges() { + + } + + @Override + public void onReattachedToActivityForConfigChanges( ActivityPluginBinding binding) { + + } + + @Override + public void onDetachedFromActivity() { + + } +} diff --git a/android/src/main/java/com/jd/jdsdk/LoadingDialog.java b/android/src/main/java/com/jd/jdsdk/LoadingDialog.java new file mode 100755 index 0000000..420debb --- /dev/null +++ b/android/src/main/java/com/jd/jdsdk/LoadingDialog.java @@ -0,0 +1,28 @@ +package com.jd.jdsdk; + +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.widget.LinearLayout; +import android.widget.TextView; + +public class LoadingDialog extends Dialog { + + private TextView tv; + + public LoadingDialog(Context context) { + super(context, R.style.loadingDialogStyle); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.dialogloading); + tv = (TextView)findViewById(R.id.tv); + tv.setText("加载"); + LinearLayout linearLayout = (LinearLayout)this.findViewById(R.id.LinearLayout); + linearLayout.getBackground().setAlpha(210); + } + +} + diff --git a/android/src/main/java/com/jd/jdsdk/PluginConstants.java b/android/src/main/java/com/jd/jdsdk/PluginConstants.java new file mode 100755 index 0000000..77ac01f --- /dev/null +++ b/android/src/main/java/com/jd/jdsdk/PluginConstants.java @@ -0,0 +1,12 @@ +package com.jd.jdsdk; + + +public interface PluginConstants { + + /** + * 超时时间设定 + */ + int TIMEOUT = 15; + String ERROR_CODE_EXCEPTION = "-99999"; + +} diff --git a/android/src/main/java/com/jd/jdsdk/PluginResponse.java b/android/src/main/java/com/jd/jdsdk/PluginResponse.java new file mode 100755 index 0000000..ce00850 --- /dev/null +++ b/android/src/main/java/com/jd/jdsdk/PluginResponse.java @@ -0,0 +1,36 @@ +package com.jd.jdsdk; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import static com.jd.jdsdk.PluginConstants.ERROR_CODE_EXCEPTION; + +public class PluginResponse implements Serializable { + + private String errorCode; + private String errorMessage; + private Object data; + + public static PluginResponse success(Object obj){ + return new PluginResponse("0", "成功", obj); + } + + public static PluginResponse failed(Exception e){ + return new PluginResponse(ERROR_CODE_EXCEPTION, "异常中止: " + e.getMessage(), null); + } + + public PluginResponse(String errorCode, String errorMessage, Object data) { + this.errorCode = errorCode; + this.errorMessage = errorMessage; + this.data = data; + } + + public Map toMap(){ + HashMap map = new HashMap<>(); + map.put("errorCode", errorCode); + map.put("errorMessage", errorMessage); + map.put("data", data); + return map; + } +} diff --git a/android/src/main/res/drawable-xxhdpi/kepler_back_normal.png b/android/src/main/res/drawable-xxhdpi/kepler_back_normal.png new file mode 100755 index 0000000..8ad35ee Binary files /dev/null and b/android/src/main/res/drawable-xxhdpi/kepler_back_normal.png differ diff --git a/android/src/main/res/drawable-xxhdpi/kepler_back_pressed.png b/android/src/main/res/drawable-xxhdpi/kepler_back_pressed.png new file mode 100755 index 0000000..a2445e3 Binary files /dev/null and b/android/src/main/res/drawable-xxhdpi/kepler_back_pressed.png differ diff --git a/android/src/main/res/drawable-xxhdpi/kepler_selcet_more_normal.png b/android/src/main/res/drawable-xxhdpi/kepler_selcet_more_normal.png new file mode 100755 index 0000000..b338e95 Binary files /dev/null and b/android/src/main/res/drawable-xxhdpi/kepler_selcet_more_normal.png differ diff --git a/android/src/main/res/drawable-xxhdpi/kepler_selcet_more_pressed.png b/android/src/main/res/drawable-xxhdpi/kepler_selcet_more_pressed.png new file mode 100755 index 0000000..ca1de58 Binary files /dev/null and b/android/src/main/res/drawable-xxhdpi/kepler_selcet_more_pressed.png differ diff --git a/android/src/main/res/drawable-xxhdpi/neterror.png b/android/src/main/res/drawable-xxhdpi/neterror.png new file mode 100755 index 0000000..6177082 Binary files /dev/null and b/android/src/main/res/drawable-xxhdpi/neterror.png differ diff --git a/android/src/main/res/drawable-xxhdpi/seclect_item_has_message.png b/android/src/main/res/drawable-xxhdpi/seclect_item_has_message.png new file mode 100755 index 0000000..0764cb1 Binary files /dev/null and b/android/src/main/res/drawable-xxhdpi/seclect_item_has_message.png differ diff --git a/android/src/main/res/drawable-xxhdpi/seclect_item_history.png b/android/src/main/res/drawable-xxhdpi/seclect_item_history.png new file mode 100755 index 0000000..59f98d1 Binary files /dev/null and b/android/src/main/res/drawable-xxhdpi/seclect_item_history.png differ diff --git a/android/src/main/res/drawable-xxhdpi/seclect_item_logout.png b/android/src/main/res/drawable-xxhdpi/seclect_item_logout.png new file mode 100755 index 0000000..8621cc5 Binary files /dev/null and b/android/src/main/res/drawable-xxhdpi/seclect_item_logout.png differ diff --git a/android/src/main/res/drawable-xxhdpi/seclect_item_no_has_message.png b/android/src/main/res/drawable-xxhdpi/seclect_item_no_has_message.png new file mode 100755 index 0000000..22cab97 Binary files /dev/null and b/android/src/main/res/drawable-xxhdpi/seclect_item_no_has_message.png differ diff --git a/android/src/main/res/drawable-xxhdpi/seclect_item_orderlist.png b/android/src/main/res/drawable-xxhdpi/seclect_item_orderlist.png new file mode 100755 index 0000000..c8643bc Binary files /dev/null and b/android/src/main/res/drawable-xxhdpi/seclect_item_orderlist.png differ diff --git a/android/src/main/res/drawable-xxhdpi/seclect_item_serch.png b/android/src/main/res/drawable-xxhdpi/seclect_item_serch.png new file mode 100755 index 0000000..99f97be Binary files /dev/null and b/android/src/main/res/drawable-xxhdpi/seclect_item_serch.png differ diff --git a/android/src/main/res/drawable-xxhdpi/select_bg.9.png b/android/src/main/res/drawable-xxhdpi/select_bg.9.png new file mode 100755 index 0000000..13064b1 Binary files /dev/null and b/android/src/main/res/drawable-xxhdpi/select_bg.9.png differ diff --git a/android/src/main/res/drawable-xxhdpi/white.png b/android/src/main/res/drawable-xxhdpi/white.png new file mode 100755 index 0000000..4dff046 Binary files /dev/null and b/android/src/main/res/drawable-xxhdpi/white.png differ diff --git a/android/src/main/res/drawable/btn_reload.xml b/android/src/main/res/drawable/btn_reload.xml new file mode 100755 index 0000000..1155166 --- /dev/null +++ b/android/src/main/res/drawable/btn_reload.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/android/src/main/res/drawable/kepler_btn_back.xml b/android/src/main/res/drawable/kepler_btn_back.xml new file mode 100755 index 0000000..063161c --- /dev/null +++ b/android/src/main/res/drawable/kepler_btn_back.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/android/src/main/res/drawable/kepler_btn_select_more.xml b/android/src/main/res/drawable/kepler_btn_select_more.xml new file mode 100755 index 0000000..cc98efa --- /dev/null +++ b/android/src/main/res/drawable/kepler_btn_select_more.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/android/src/main/res/drawable/kepler_dialog_bk.xml b/android/src/main/res/drawable/kepler_dialog_bk.xml new file mode 100755 index 0000000..b0cc3d5 --- /dev/null +++ b/android/src/main/res/drawable/kepler_dialog_bk.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/android/src/main/res/drawable/kepler_dialog_button_ne.xml b/android/src/main/res/drawable/kepler_dialog_button_ne.xml new file mode 100755 index 0000000..e8105ec --- /dev/null +++ b/android/src/main/res/drawable/kepler_dialog_button_ne.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/android/src/main/res/drawable/kepler_dialog_button_po.xml b/android/src/main/res/drawable/kepler_dialog_button_po.xml new file mode 100755 index 0000000..c515561 --- /dev/null +++ b/android/src/main/res/drawable/kepler_dialog_button_po.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/src/main/res/drawable/pressbar_color.xml b/android/src/main/res/drawable/pressbar_color.xml new file mode 100755 index 0000000..9fb4502 --- /dev/null +++ b/android/src/main/res/drawable/pressbar_color.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/src/main/res/drawable/sdk_title_bg_with_shadow.xml b/android/src/main/res/drawable/sdk_title_bg_with_shadow.xml new file mode 100755 index 0000000..e2ce9cc --- /dev/null +++ b/android/src/main/res/drawable/sdk_title_bg_with_shadow.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/src/main/res/drawable/yuanjiao.xml b/android/src/main/res/drawable/yuanjiao.xml new file mode 100755 index 0000000..28bb28e --- /dev/null +++ b/android/src/main/res/drawable/yuanjiao.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/android/src/main/res/layout/dialogloading.xml b/android/src/main/res/layout/dialogloading.xml new file mode 100755 index 0000000..a4d83ad --- /dev/null +++ b/android/src/main/res/layout/dialogloading.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/android/src/main/res/layout/item_tab_layout.xml b/android/src/main/res/layout/item_tab_layout.xml new file mode 100755 index 0000000..579409a --- /dev/null +++ b/android/src/main/res/layout/item_tab_layout.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/src/main/res/layout/kepler_mid_lin.xml b/android/src/main/res/layout/kepler_mid_lin.xml new file mode 100755 index 0000000..66df9d0 --- /dev/null +++ b/android/src/main/res/layout/kepler_mid_lin.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/android/src/main/res/layout/kepler_simple_dialog_lay.xml b/android/src/main/res/layout/kepler_simple_dialog_lay.xml new file mode 100755 index 0000000..7d869d5 --- /dev/null +++ b/android/src/main/res/layout/kepler_simple_dialog_lay.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + +