如何为应用内开发人员工具模拟NFC标记?

问题描述 投票:1回答:1

我正在尝试使用应用内开发人员模拟工具来模拟NFC标签。当前实现使用反射并且针对API 27.使用AndroidX迁移到API 28,找不到方法createMockTag。我注意到它是Android代码中的public static,但是用@Hide注释,这意味着我无法访问它。但是,我找到了一种方法来从包中创建一个标签,但我还没有找到一个简单的方法来实现它。我可以创建自己的Parcelable类,但是当在构造函数中调用in.readInArray(...)时,它会询问我没有的参数。我会附上它看起来像什么以及我希望它看起来像什么。

这是一个大问题,因为我们需要模拟NFC标签,但似乎没有办法访问该方法。而且我也尝试将Tag.java类复制到我的项目中,但它无法访问某些看似内部的类,如INfcTagTagTechnology中的枚举。有没有其他人遇到这个,可以请帮助我?谢谢。

// Tag mockTag = Tag.CREATOR.createFromParcel(); // I'd like to create one here
Method createMockTag = Tag.class.getMethod("createMockTag", byte[].class, int[].class, Bundle[].class);     
scanIntent.putExtra(NfcAdapter.EXTRA_TAG, (Tag) createMockTag.invoke(Tag.class, tagId, new int[]{}, new Bundle[]{}));

以下是我看过的链接:

java kotlin nfc android-9.0-pie androidq
1个回答
0
投票

您不希望从原始代码中复制代码,这不是模拟的工作方式。如果此特定方法已标记为@Hide,则可能意味着它已被弃用。这可能意味着API 28+中有这种方法的替代方案。 @Hide很可能是因为他们还没有完全弃用它,但很可能在未来。这是当前的参考 - https://developer.android.com/reference/android/nfc/package-summary。但总的来说,说你使用Mockito - https://static.javadoc.io/org.mockito/mockito-core/2.25.1/org/mockito/Mockito.html#2 - 只是存在模拟。对于简单的静态方法,看起来有几个线程 - 对于实际的功能请求:https://github.com/mockito/mockito/issues/1013和解决方法:Mocking static methods with Mockito不确定变通方法的相关性(它有点旧)。

© www.soinside.com 2019 - 2024. All rights reserved.