微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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端使用静态实例成员对象.

原文地址:https://www.jb51.cc/android/309651.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐