我想知道是否有任何从 QML(或 c++)发送自定义 android 意图的最佳实践技巧。
我应该创建一个自定义 android 活动并使用 QAndroidJniObject 类来调用它还是有更好的方法?
我的目的是创建一个从 QML 到其他 Android 应用程序的简单共享 URL 功能。
thanks
使用附加静态方法扩展 QtActivity:
package org.whatever
public class YourActivity extends org.qtproject.qt5.android.bindings.QtActivity
{
private static YourActivity instance;
YourActivity() {
instance = this;
}
public static void shareUrl(QString url) {
//create intent here
//can use instance object
}
}
在 C++ 端使用 QAndroidJniObject 调用 shareUrl 方法
class QmlInterface : public QObject
{
Q_OBJECT
public:
QmlInterface();
Q_INVOKABLE void shareUrl( QString url );
};
和实施:
void QmlInterface:: shareUrl( QString url )
{
#ifdef Q_OS_ANDROID
QAndroidJniObject::callStaticMethod( "org/whatever/YourActivity",
"shareUrl",
"(Ljava/lang/String;)V",
QAndroidJniObject::fromString( url ));
#endif
}
在 java 端使用静态方法可以显着简化 jni 调用,因为您不必获取 Activity 实例。因为静态发送Intent需要Activity上下文instance成员对象在java端使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)