如何使用QAndroidJniObject从Java调用Intent

时间:2015-02-19 15:37:32

标签: java android c++ qt qandroidjniobject

现在,我想从我的应用程序中调用此驱动程序,但我使用QT。我发现类QAndroidJNIObject来调用java代码。 我还在github.com/demantz/RFAnalyzer/blob/master/app/src/main/java/com/mantz_it/rfanalyzer/MainActivity.java中找到了java中的一个例子。

try { 
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("iqsrc://-a 127.0.0.1 -p 1234 -n 1"));
    startActivityForResult(intent, RTL2832U_RESULT_CODE); 
}
catch (ActivityNotFoundException e) 
{
    Log.e(LOGTAG, "createSource: RTL2832U is not installed");
    ...
}

但我找不到一种方法来编写C ++ / Qt中的正确代码来进行与Java中的示例相同的调用。我不确定这个java代码是否正确或遗漏了什么。

有人能帮助我吗?

另外我想问一下我是否可以通过Qt代码与anet.h libs建立tcp连接?

1 个答案:

答案 0 :(得分:0)

您需要使用QJniAndroidObject类来创建JNI对象并对其进行操作。它并不总是很明显,但它最终会起作用。您的9行Java很可能最终成为50行的C ++代码。我建议您逐个转码每一行,并始终检查对象是否有效(QJniAndroidObject::isValid())。

以下是创建Intent并开始活动的示例: startActivity on Qt, nothing displays

尝试编写一些代码,如果失败则发布另一个SO问题(创建和操作QJniAndroidObject的语法对于不熟悉Java的C ++开发人员来说并不总是显而易见的。)