【问题标题】:Working with Android InputStreams in native c code在原生 c 代码中使用 Android InputStreams
【发布时间】:2014-07-10 06:22:14
【问题描述】:

谁能给我一个提示,如何在本机代码中使用 Android InputStream。

更具体的例子: Java代码

public class SomeParser {
    public native ArrayList<String> parse(InputStream stream);
}

我需要以原生方式读取 InputStream 并将匹配模式返回给 Android Java 代码。 stream 是来自 HttpRequest 的 BufferedInputStream

【问题讨论】:

    标签: c++ c android-ndk java-native-interface inputstream


    【解决方案1】:

    您需要通过 JNI 将对 Stream 的引用传递给您的本机代码,然后使用 JNI 调用对其进行操作。您可能会得到 java 字节数组。您可以使用 JNI 将这些复制到本机数组。都是标准的JNI。

    【讨论】:

    • 所以似乎没有办法像使用 C iostream 那样使用 Java InputStream? Java 代码 (atm) 获取 Http 并提供给本机代码的主要思想与 inputstream 一起工作,因此可以将其加载到 pugixml 之类的东西中。
    • Java 对象不是 C++ std::iostream 或 C FILE* 的扩展。没有(标准)方法可以转换这些。您必须通过本机代码中的 JNI 接口来操作 Java 对象。与本机 Java 调用相比,这很麻烦而且很容易出错。
    • 谢谢。看起来我会将 ByteArray 传递给本机,至少直到网络通信将在 Java 端。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多