我正在尝试使用应用内开发人员模拟工具来模拟 NFC 标签。当前实现使用反射并针对 API 27。使用 AndroidX 迁移到 API 28,找不到该方法createMockTag
。我注意到它public static
在 Android 代码中,但带有注释@Hide
,这意味着我无法访问它。然而,我找到了一种从包裹创建标签的方法,但我还没有找到任何简单的方法来做到这一点。我可以创建自己的 Parcelable 类,但是in.readInArray(...)
在构造函数中调用时,它会要求提供我没有的参数。我会附上它的样子知道和我希望它看起来像什么。
这是一个大问题,因为我们需要模拟 NFC 标签,但似乎没有办法访问该方法。而且我还尝试将该Tag.java
类复制到我的项目中,但它无法访问某些看似内部的类,INfcTag
例如TagTechnology
. 有没有其他人遇到过这个,可以请帮助我吗?谢谢你。
// 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[]{}));
以下是我看过的链接:
- https://www.vogella.com/tutorials/AndroidParcelable/article.html
- https://guides.codepath.com/android/using-parcelable
- 如何在 android 中创建 Tag 对象?
- 识别 NFC 标签 ID
- https://www.google.com/search?client=safari&rls=en&q=android+9+nfc+not+working&ie=UTF-8&oe=UTF-8
- https://www.google.com/search?client=safari&rls=en&biw=1080&bih=923&ei=68ijXMnoDoHisAXPjLzQCA&q=public+static+Tag+createMockTag%28byte%5B%5D+is%2C+int%5B%5D+techList% 2C+Bundle%5B%5D+techList+Extras%29+%7B&oq=public+static+Tag+createMockTag%28byte%5B%5D+is%2C+int%5B%5D+techList%2C+Bundle%5B%5D +techList+Extras%29+%7B&gs_l=psy-ab.3...107084.107084..107212...0.0..0.0.0....0....1..gws-wiz。 rfrM415Sx7o
- https://developer.android.com/about/versions/pie/android-9.0
- https://developer.android.com/reference/android/nfc/package-summary.html
- https://developer.android.com/sdk/api_diff/28/changes.html
- https://developer.android.com/reference/android/os/Parcelable.Creator
- 可能还有几个我已经关闭或导航离开的标签。