UE4中添加Android BroadcastReceiver

博观而约取,厚积而薄发。这篇文章主要讲述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打包后亲测有效♥ ♥ ♥
最后附上参考资料
 

    推荐阅读