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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...