Qt / QML Android最佳实践发送自定义Intent(共享URL)

前端之家收集整理的这篇文章主要介绍了Qt / QML Android最佳实践发送自定义Intent(共享URL)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道是否有任何最佳实践提示从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端使用静态实例成员对象.

猜你在找的Android相关文章