博观而约取,厚积而薄发。这篇文章主要讲述UE4中添加Android BroadcastReceiver相关的知识,希望能为你提供帮助。
最近在UE项目中需要接收android应用发送的退出事件,然后做相关处理。在Android应用中使用“
广播“
sendBroadcast来发送相关事件,发送端比较简单。
Intent intent = new Intent(); intent.setAction("android.action.hxdf.killApp"); intent.putExtra("bundleID", bundleID); sendBroadcast(intent);
在接收端需要注册接收事件,分别为静态和动态注册。
// 在UE中与Android相关的接口和配置信息定义在*APL_xml中,以下代码均为apl中的格式
【UE4中添加Android BroadcastReceiver】
首先声明一个注册类:
< gameActivityClassAdditions> < insert> private BroadcastReceiver mBroadcastReceiver; public static class HappyIslandReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if ("android.action.hxdf.killApp".equals(intent.getAction())) { Bundle bundle = intent.getExtras(); if (bundle != null) { Runtime.getRuntime().exit(0); return ; } Runtime.getRuntime().exit(0); } } } < /insert> < /gameActivityClassAdditions>
1、静态注册:在AndroidManifest中注册BroadcastReceiver。
< androidManifestUpdates> < addElements tag="application"> < receiver android:name="com.epicgames.ue4.GameActivity$HappyIslandReceiver" android:exported="true"> < intent-filter> < action android:name="android.action.hxdf.killApp"/> < /intent-filter> < /receiver> < /addElements> < /androidManifestUpdates>
其中HappyIslandReceiver为GameActivity的内部类,需要注意的是“ receiver android:name=” 后面必须是完整的路径+类名,主类和内部类间用$来间隔。
“ action android:name=” 后面的类型必须是与发送事件中Intent的参数一致。
2、动态注册:通过调用registerReceiver来手动注册,需要进行注销操作。相关的操作一般发生在onStart/onDestroy中。
< !-- optional additions to GameActivity onDestroy in GameActivity.java --> < gameActivityOnDestroyAdditions> < insert> unregisterReceiver(mBroadcastReceiver); < /insert> < /gameActivityOnDestroyAdditions> < !-- optional additions to GameActivity onStart in GameActivity.java --> < gameActivityOnStartAdditions> < insert> mBroadcastReceiver = new HappyIslandReceiver(); registerReceiver(mBroadcastReceiver, new IntentFilter("android.action.hxdf.killApp")); < /insert> < /gameActivityOnStartAdditions>
其中需要注意的是在registerReceiver时IntentFilter的参数也要跟发送端的Intent参数一致。
♥ ♥ ♥ 以上通过UE4打包后亲测有效♥ ♥ ♥
最后附上参考资料
推荐阅读
- Android Studio无法下载插件的解决方法
- appium 在linux安装和使用(持续更新)
- flutter调用Android原生logcat打印日志
- apple script open finder
- 从0系统学Android--4.2 Fragment 生命周期
- windows环境下jenkins+gradle+Android 自动打包部署
- Error: Default interface methods are only supported starting with Android N (--min-api 24)类似问题解决(示例代
- es6 class的基础语法,es6 class继承/ es5 call继承描述/使用apply比较完美继承Array的方法sort倒序排序console.table()表格生成
- Android 调起系统相机拍照