我想知道是否有任何关于从QML(或c ++)发送自定义Android意图的最佳实践技巧。
我应该创建一个自定义的android活动并使用QAndroidJniObject类来调用它还是有更好的方法?
我的目的是创建一个简单的共享URL功能,从QML到其他Android应用程序。
感谢
答案 0 :(得分:6)
使用其他静态方法扩展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实例。因为需要Activity上下文来发送Intent static 实例在java端使用成员对象。