app/build.gradle
@@ -28,14 +28,14 @@ defaultConfig { applicationId "com.hdl.photovoltaic" minSdk 23 targetSdk 30 targetSdk 28 versionCode 1 versionName "1.3.1"//版本规则1.3是产品功能迭代用的,最后一位0是我们修复bug用的 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true manifestPlaceholders = mfph ndk { abiFilters 'x86', 'armeabi-v7a', "arm64-v8a" //不支持armeabi abiFilters 'armeabi-v7a', "arm64-v8a" //不支持armeabi } manifestPlaceholders = [ @@ -62,6 +62,10 @@ ] } // 保证其他的lib没有被preDex dexOptions { preDexLibraries = false } repositories { flatDir { dirs 'libs' app/src/main/AndroidManifest.xml
@@ -144,6 +144,7 @@ android:exported="false" /> <activity android:name=".ui.MyPowerStationActivity" android:theme="@style/DCloudMPHostActivityTheme" android:exported="false" /> <activity android:name=".ui.HomeLoginActivity" app/src/main/java/com/hdl/photovoltaic/HDLApp.java
@@ -1,9 +1,12 @@ package com.hdl.photovoltaic; import android.app.Application; import android.content.Context; import android.content.Intent; import android.text.TextUtils; import androidx.multidex.MultiDex; import com.hdl.hdlhttp.HxHttpConfig; import com.hdl.linkpm.sdk.HDLLinkPMSdk; @@ -311,4 +314,10 @@ HdlLogLogic.print("测试Mqtt连接服务端失败--->"); } } @Override protected void attachBaseContext(Context base) { MultiDex.install(base); super.attachBaseContext(base); } } app/src/main/java/com/hdl/photovoltaic/ui/CPowerStationActivity.java
@@ -5,7 +5,10 @@ import android.os.Process; import android.os.SystemClock; import android.text.TextUtils; import android.util.Log; import androidx.annotation.Nullable; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -84,11 +87,25 @@ } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setTheme(R.style.NoAnimationTheme); } @Override protected void onResume() { super.onResume(); //启动页与mainActivity样式一样,这样启动页和mainActivity看上去是一个界面,目的是为了mainActivity遮住下一页; AppManagerUtils.getAppManager().finishActivity(StartActivity.class); // AppManagerUtils.getAppManager().finishActivity(StartActivity.class); this.portConflictDialog(); } public void startAppAutomaticallyOpenUni() { //低于安卓14版本 if (android.os.Build.VERSION.SDK_INT < 34) { startAppAutomaticallyOpenUni(false); } else { startAppAutomaticallyOpenUni(true); } } @Subscribe(threadMode = ThreadMode.MAIN) @@ -176,11 +193,15 @@ } } /** * C端启动App自动打开小程序电站详情界面 */ private void startAppAutomaticallyOpenUni() { private void startAppAutomaticallyOpenUni(boolean delay) { if(delay) { SystemClock.sleep(2000); } List<HouseIdBean> HouseIdList = HdlResidenceLogic.getInstance().getHouseIdList(); if (HouseIdList.size() == 0) { String path = HDLUniMP.UNI_EVENT_OPEN_HOME_Null_C; @@ -198,8 +219,6 @@ String path = HDLUniMP.UNI_EVENT_OPEN_HOME_DETAILS_C + "?homeId=" + houseIdBean.getHomeId() + "&homeName=" + houseIdBean.getHomeName() + "&powerStationStatus=" + houseIdBean.getPowerStationStatus(); HdlUniLogic.getInstance().openUniMP(path, null); } } // /** app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java
@@ -3,6 +3,10 @@ import android.content.Intent; import android.os.Bundle; import android.os.SystemClock; import android.util.Log; import androidx.annotation.Nullable; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.linkpm.sdk.user.HDLLinkPMUser; @@ -11,10 +15,12 @@ import com.hdl.photovoltaic.config.AppConfigManage; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlResidenceLogic; import com.hdl.photovoltaic.other.HdlUniLogic; import com.hdl.photovoltaic.ui.bean.HouseIdBean; import com.hdl.photovoltaic.uni.HDLUniMP; import com.hdl.photovoltaic.uni.HDLUniMPSDKManager; import java.util.List; @@ -52,8 +58,7 @@ intent.setClass(StartActivity.this, CPowerStationActivity.class); } startActivity(intent); // finish(); openActivity(intent); } @Override @@ -67,20 +72,32 @@ //C端用户跳转界面 intent.setClass(StartActivity.this, CPowerStationActivity.class); } startActivity(intent); // finish(); openActivity(intent); } }); } else { Intent intent = new Intent(); intent.setClass(this, HomeLoginActivity.class); openActivity(intent); } } void openActivity(Intent intent) { intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); startActivity(intent); finish(); } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.NoAnimationTheme); } @Override protected void onDestroy() { super.onDestroy(); overridePendingTransition(0, 0); } } app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMPSDKManager.java
@@ -3,6 +3,7 @@ import android.app.Application; import android.content.Context; import android.os.Environment; import android.os.SystemClock; import android.text.TextUtils; @@ -279,14 +280,19 @@ UniMPOpenConfiguration uniMPOpenConfiguration = new UniMPOpenConfiguration(); uniMPOpenConfiguration.path = path; uniMPOpenConfiguration.extraData = jsonObject; uniMPOpenConfiguration.splashClass=MySplashView.class; uniMP = DCUniMPSDK.getInstance().openUniMP(mContext, uniAppId, uniMPOpenConfiguration); } if(TextUtils.isEmpty(mCurrentAppId)){ //第一次用要休眠 SystemClock.sleep(1000); } mCurrentAppId = uniAppId;//记录当前小程序 mUniMPCaches.put(uniMP.getAppid(), uniMP); } catch (Exception e) { e.printStackTrace(); HdlThreadLogic.toast(HDLApp.getInstance(), R.string.uni_open_error); initDCUniMPSDK(HDLApp.getInstance()); // initDCUniMPSDK(HDLApp.getInstance()); HdlLogLogic.print("打开失败===" + e.getMessage()); } } app/src/main/java/com/hdl/photovoltaic/uni/MySplashView.java
New file @@ -0,0 +1,35 @@ package com.hdl.photovoltaic.uni; import android.content.Context; import android.graphics.Color; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.TextView; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.ui.CPowerStationActivity; import io.dcloud.feature.sdk.Interface.IDCUniMPAppSplashView; public class MySplashView implements IDCUniMPAppSplashView { View splashView; @Override public View getSplashView(Context context, String appid, String s1, String s2) { // 在Activity中,可以直接使用this获取LayoutInflater LayoutInflater inflater = LayoutInflater.from(context); // 通过inflate方法将布局文件转换为View对象 splashView = inflater.inflate(R.layout.activity_splash, null); return splashView; } @Override public void onCloseSplash(ViewGroup rootView) { if (rootView != null) rootView.removeView(splashView); } } app/src/main/res/anim/dcloud_unimp_close_exit.xml
@@ -1,17 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:duration="300" android:fromAlpha="1.0" android:toAlpha="0" /> <!-- <translate--> <!-- android:fromXDelta="0"--> <!-- android:toXDelta="100%p"--> <!-- android:duration="300"--> <!-- android:interpolator="@android:anim/accelerate_interpolator"--> <!-- />--> </set> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="200" android:fromXDelta="0%p" android:toXDelta="0%p" /> app/src/main/res/anim/dcloud_unimp_host_close_exit.xml
@@ -1,14 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="200" android:fromXDelta="0%p" android:toXDelta="0%p" /> android:duration="300" android:fromAlpha="1.0" android:toAlpha="0" /> <!-- <translate--> <!-- android:fromXDelta="0"--> <!-- android:toXDelta="100%p"--> <!-- android:duration="300"--> <!-- android:interpolator="@android:anim/accelerate_interpolator"--> <!-- />--> </set> app/src/main/res/anim/dcloud_unimp_host_open_enter.xml
@@ -1,12 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:duration="300" android:fromAlpha="0" android:toAlpha="1.0" /> <translate android:duration="300" android:fromXDelta="100%p" android:interpolator="@android:anim/accelerate_interpolator" android:toXDelta="0" /> </set> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="200" android:fromXDelta="0%p" android:toXDelta="0%p" /> app/src/main/res/anim/dcloud_unimp_open_enter.xml
@@ -1,15 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="200" android:fromXDelta="0%p" android:toXDelta="0%p" /> android:duration="300" android:fromAlpha="0.0" android:toAlpha="1.0" /> <!-- <translate--> <!-- android:fromXDelta="0"--> <!-- android:toXDelta="100%p"--> <!-- android:duration="300"--> <!-- android:interpolator="@android:anim/accelerate_interpolator"--> <!-- />--> </set> app/src/main/res/layout/activity_splash.xml
New file @@ -0,0 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:alpha="0.6" android:background="@color/text_FFFFFFFF"> </LinearLayout> app/src/main/res/values/styles.xml
@@ -4,6 +4,8 @@ <item name="android:background">@color/black_overlay</item> <item name="android:buttonBarStyle">?android:attr/buttonBarStyle</item> </style> <style name="NoAnimationTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowAnimationStyle">@null</item> </style> </resources> app/src/main/res/values/themes.xml
@@ -58,7 +58,7 @@ </style> <style name="DCloudMPHostActivityTheme" parent="@style/Theme.AppCompat"> <style name="DCloudMPHostActivityTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowAnimationStyle">@style/uniMPHostWindowAnimation</item> </style> build.gradle
@@ -53,3 +53,16 @@ task clean(type: Delete) { delete rootProject.buildDir } // 保证dex_files文件中指定的文件都加载到Main Dex中 afterEvaluate { tasks.matching { it.name.startsWith('dex') }.each { dx -> if (dx.additionalParameters == null) { dx.additionalParameters = [] } dx.additionalParameters += '--multi-dex' dx.additionalParameters += "--main-dex-list=$projectDir/dex_files".toString() } }