app/build.gradle | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/libs/uniapp-v8-release.aar | 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/AndroidManifest.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/aidl/com/hdl/photovoltaic/IUniappAidlInterface.aidl | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/services/UniappService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseAndDeviceFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/uni/BSplashView.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/utils/ProcessManagerUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/build.gradle
@@ -108,6 +108,7 @@ buildFeatures { viewBinding true aidl true } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 app/libs/uniapp-v8-release.aarBinary files differ
app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@ android:label="@string/app_name" android:requestLegacyExternalStorage="true" android:supportsRtl="true" android:persistent="true" android:theme="@style/Theme.PhotovoltaicDebug"> <activity android:name=".ui.newC.PowerStationsMoveActivity" @@ -214,6 +215,15 @@ android:name="org.eclipse.paho.android.service.MqttService" android:exported="false" /> <service android:name=".services.UniappService" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="UniappService.ACTION" /> </intent-filter> </service> <meta-data android:name="design_height_in_dp" android:value="812" /> @@ -224,5 +234,7 @@ android:name="ScopedStorage" android:value="true" /> </application> <queries> <package android:name="com.hdl.photovoltaic.services"/> </queries> </manifest> app/src/main/aidl/com/hdl/photovoltaic/IUniappAidlInterface.aidl
New file @@ -0,0 +1,8 @@ // IUniappAidlInterface.aidl package com.hdl.photovoltaic; // Declare any non-default types here with import statements interface IUniappAidlInterface { void sendMsg(String s); } app/src/main/java/com/hdl/photovoltaic/services/UniappService.java
New file @@ -0,0 +1,49 @@ package com.hdl.photovoltaic.services; import android.app.Service; import android.content.Intent; import android.os.IBinder; import com.hdl.photovoltaic.IUniappAidlInterface; import com.hdl.sdk.link.common.utils.LogUtils; /** * Created by hxb on 2024/12/27. */ public class UniappService extends Service { private static final String TAG = "UniappService"; public UniappService() { } IUniappAidlInterface.Stub mIBinder=new IUniappAidlInterface.Stub() { @Override public void sendMsg(String mes) { LogUtils.i(TAG,"收到请求数据:" + mes); } }; @Override public IBinder onBind(Intent intent) { LogUtils.i(TAG,"onBind: intent = "+intent.toString()); return mIBinder; } @Override public boolean onUnbind(Intent intent) { LogUtils.i(TAG,"onUnbind"); return super.onUnbind(intent); } @Override public void onDestroy() { LogUtils.i(TAG,"onDestroy"); super.onDestroy(); } } app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseAndDeviceFragment.java
@@ -5,6 +5,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.SystemClock; import android.view.View; import android.view.Window; import android.widget.ImageView; @@ -46,6 +47,7 @@ import com.hdl.photovoltaic.ui.bean.StatusOverviewBean; import com.hdl.photovoltaic.uni.HDLUniMP; import com.hdl.photovoltaic.utils.PermissionUtils; import com.hdl.photovoltaic.utils.ProcessManagerUtils; import com.hdl.photovoltaic.utils.URLEncodingUtils; import com.hdl.photovoltaic.widget.DefaultFilteringDialog; import com.hdl.photovoltaic.widget.DelayedConfirmationCancelDialog; @@ -281,7 +283,6 @@ HdlResidenceLogic.getInstance().switchHouse(houseIdBean, true); String path = HDLUniMP.UNI_EVENT_OPEN_HOME_DETAILS + "?homeId=" + houseIdBean.getHomeId() + "&homeName=" + houseIdBean.getHomeName() + "&powerStationStatus=" + houseIdBean.getPowerStationStatus(); HdlUniLogic.getInstance().openUniMP(path, null); } @Override app/src/main/java/com/hdl/photovoltaic/uni/BSplashView.java
@@ -1,15 +1,24 @@ package com.hdl.photovoltaic.uni; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.IBinder; import android.os.SystemClock; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.hdl.photovoltaic.HDLApp; import com.hdl.photovoltaic.IUniappAidlInterface; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.utils.ProcessManagerUtils; import java.lang.ref.WeakReference; import io.dcloud.feature.sdk.Interface.IDCUniMPAppSplashView; @@ -37,9 +46,43 @@ } } catch (Exception ignored) { } //只能通过这种方式调用 Intent intent = new Intent(); intent.setPackage("com.hdl.photovoltaic"); intent.setAction("UniappService.ACTION"); context.bindService(intent, stringservice, Context.BIND_AUTO_CREATE); return splashView; } static ServiceConnection stringservice = new ServiceConnection() { private WeakReference<Context> contextWeakReference; @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { IUniappAidlInterface iUniappAidlInterface = IUniappAidlInterface.Stub.asInterface(iBinder); try { iUniappAidlInterface.sendMsg("建立连接"); } catch (Exception e) { } } @Override public void onServiceDisconnected(ComponentName componentName) { Log.i("BSplashView", "连接已断开"); Context context = contextWeakReference.get(); ProcessManagerUtils.killAllProcess(contextWeakReference.get()); } public void setContextWeakReference(WeakReference<Context> contextWeakReference) { this.contextWeakReference = contextWeakReference; } }; @Override public void onCloseSplash(ViewGroup rootView) { if (rootView != null) app/src/main/java/com/hdl/photovoltaic/utils/ProcessManagerUtils.java
New file @@ -0,0 +1,27 @@ package com.hdl.photovoltaic.utils; import android.app.ActivityManager; import android.content.Context; import java.util.List; /** * Created by hxb on 2024/12/27. */ public class ProcessManagerUtils { //删除当前应用所有进程 public static void killAllProcess(Context context) { if(context==null){ return; } final ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> procList = am.getRunningAppProcesses(); for (ActivityManager.RunningAppProcessInfo proc : procList) { if (proc.processName != null && proc.processName.startsWith(context.getPackageName())) { android.os.Process.killProcess(proc.pid); break; } } } }