我想知道是否有任何最佳实践提示从QML(或c)发送自定义
Android意图.
我应该创建一个自定义的android活动并使用QAndroidJniObject类来调用它还是有更好的方法?
我的目的是创建一个简单的共享URL功能,从QML到其他Android应用程序.
谢谢
解决方法
使用其他静态方法扩展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,所以在java端使用静态实例成员对象.