当前位置: 首页 > 知识库问答 >
问题:

如何在qt6中使用类java的静态方法

莫河
2023-03-14

我有:MyFile.java:

import android.net.Uri
import android.content.ContentResolver
import android.os.ParcelFileDescriptor

package org.qtproject.example.p2p; // what I need write here?
public class MyFile {
    static int getFdFromString(ContentResolver cr, String suri) {
        var uri = Uri(suri);
        var fd = cr.openFileDescriptor(uri, "r");
        var res = fd.getFd();
        return res;
    }
}

我的应用程序中的代码

qDebug("================================================================================================");
    auto activity = QJniObject(QNativeInterface::QAndroidApplication::context());
    QJniObject uriString = QJniObject::fromString(filename);
    QJniObject contentResolver = activity.callObjectMethod("getContentResolver", "()Landroid/content/ContentResolver;");
    jint fd = QJniObject::callStaticMethod<jint>("MyFile",  // what I need to write without "MyFile"?
                                                       "getFdFromString",
                                                       "(Landroid/content/ContentResolver;Ljava/lang/String)I",
                                                       contentResolver.object<jobject>(), uriString.object<jobject>());
    qDebug() << fd;
    qDebug("================================================================================================");

如何连接此文件?(从Qt(c)代码运行静态方法)

共有1个答案

车明贤
2023-03-14

这有帮助吗?

 jint fd = QJniObject::callStaticMethod<jint>("org/qtproject/example/p2p",
                                                           "getFdFromString",
                                                           "(Landroid/content/ContentResolver;Ljava/lang/String)I",
                                                           contentResolver.object<jobject>(), uriString.object<jobject>());

我认为你的java类的路径是

org/qtproject/example/p2p

还要更正java文件,将包放在文件的第一行,然后导入

package org.qtproject.example.p2p;
import android.net.Uri
import android.content.ContentResolver
import android.os.ParcelFileDescriptor

     
    public class MyFile {
        static int getFdFromString(ContentResolver cr, String suri) {
            var uri = Uri(suri);
            var fd = cr.openFileDescriptor(uri, "r");
            var res = fd.getFd();
            return res;
        }
    }
 类似资料:
  • 问题内容: 我有以下代码: 到目前为止,代码还不错,但是我无法像显示的那样在main方法中实例化 我该怎么做?我不想使我的课堂静止。 问题答案: 你还必须参考其他外部类。 如果内在是静态的,那将是

  • 我希望在从另一个类调用的方法“SetTotalSum”中使用findViewById。我如何使用它,尽管它是一个静态方法?

  • 是否可以在中的class中添加一个新的静态方法?通常,由于Kotlin Extensions,这样的事情在Kotlin中是可能的。 我已经尝试在一个名为的文件中执行以下操作: 但<code>数学。无法解析同伴。。。

  • 问题内容: 我有一个类,我正在为应该执行以下操作的方法编写测试: 1)它应该调用静态方法上 2)它应该从子类方法填充变量 3)它应该从传递String参数的最终帮助器类中调用静态方法 4)它应该在blockList中调用每个的run方法 到目前为止,我有这个空方法: 我正在使用JUnit,Mockito来模拟对象,并且尝试使用PowerMockito来模拟静态类和最终类(Mockito不能这样做)

  • 问题内容: 我想知道何时使用静态方法?假设我有一个带有几个和的类,一个或两个方法,并且我希望这些方法只能在该类的实例对象上调用。这是否意味着我应该使用静态方法? 例如 要么 我很困惑! 问题答案: 一个经验法则:问自己“即使尚未构建Obj,调用此方法是否有意义?” 如果是这样,那肯定是静态的。 因此,在一个类中,Car你可能有一个静态的方法,因为即使没有人制造过汽车,也可能想知道35mpg转换为什

  • 问题内容: 我想知道何时使用静态方法?假设我有一个带有几个getter和setter的类,一个或两个方法,并且我希望这些方法只能在该类的实例对象上调用。这是否意味着我应该使用静态方法? 例如 要么 (这是静态方式吗?) 我很困惑! 问题答案: 一个经验法则:问自己“即使尚未构建Obj,调用此方法是否有意义?” 如果是这样,那肯定是静态的。 因此,在一个类中,你可能有一个静态的方法,因为即使没有人制