片段有没有办法接收Intent数据而无需通过活动?

时间:2017-09-27 07:40:34

标签: android android-fragments unity3d android-intent nfc

我来自Unity3D开发的世界,我是Android开发的新手。我正在尝试为Unity Android创建一个NFC插件。我按照Twinsprite提供的this guide关于如何通过扩展UnityPlayerActivity来创建插件。使用Twinsrpite的代码,该插件支持Android的NFC前景调度系统,以便在我的应用程序位于前台时捕获NFC意图。

在我的研究中,我发现扩展UnityPlayerActivity是不受欢迎的,因为它可能会导致Unity项目中其他插件的依赖性出现很多问题。从那里我决定我的插件扩展Fragment类,就像许多其他Unity Android插件一样。这样,我的无头Fragment插件可以利用片段生命周期的回调,而不会在Unity中引起问题。

虽然我在修改代码以处理Fragment时遇到了问题。 Twinsprite的代码依赖于Activity的{​​{1}}回调,然后将onNewIntent数据传递到解析NFC消息的处理程序方法中。由于我编写代码以使用Intent而不是Fragment,因此我无法再访问Activity回调,因此无法调用处理程序方法了。如上所述,我希望不要延长onNewIntent,因此我还是留下了这个问题:

如何在UnityPlayerActivity插件中从我的NFC Intent接收数据而不延长Fragment

2 个答案:

答案 0 :(得分:0)

只需向Fragment添加一个方法,该方法可以将活动传递给新的Intent。然后片段可以根据需要处理意图。

MyUnityFragment myUnityFragment;

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);    
    myUnityFragment.newIntent(intent);
}

答案 1 :(得分:0)

我决定在不使用UnityPlayerActivity类的情况下继续扩展FragmentFragment扩展插件的目的是避免更改AndroidManifest.xml,因为我担心它会导致其他插件出现问题,例如分析,Facebook等。Intent必须由Activity处理,所以我试图做的事情是不可能的。