gpt4 book ai didi

java - 未使用 QAndroidJniObject 调用的三个函数之一

转载 作者:太空宇宙 更新时间:2023-11-04 12:54:08 26 4
gpt4 key购买 nike

这是从我的自定义 java 类调用三个函数的代码:

QAndroidJniObject datafile = QAndroidJniObject::fromString(path);
QAndroidJniObject password = QAndroidJniObject::fromString("asimpletest");

QAndroidJniObject::callStaticObjectMethod("org/qcolocrypt/AESCrypt",
"AESCryptInit",
"(Ljava/lang/String;Ljava/lang/String;)V;",
password.object<jstring>(),
datafile.object<jstring>());


QAndroidJniObject decrypted_data = QAndroidJniObject::callStaticObjectMethod("org/qcolocrypt/AESCrypt",
"decrypt",
"()Ljava/lang/String;");


QAndroidJniObject fname = QAndroidJniObject::callStaticObjectMethod("org/qcolocrypt/AESCrypt",
"getFilename",
"()Ljava/lang/String;");

QAndroidJniObject status = QAndroidJniObject::callStaticObjectMethod("org/qcolocrypt/AESCrypt",
"getStatus",
"()Ljava/lang/String;");

以下是其中三个函数的 java 代码:

不工作的:

public static void AESCryptInit (String passwd, String datafile){

// Initializing variables.
rawdata = null;
status = "";
fileName = datafile;

Log.i("[QCOLOCRYPT]","The filename is " + datafile);

// Transforming the passwd to 16 bytes.
try {
MessageDigest digester = MessageDigest.getInstance("MD5");
InputStream in = new ByteArrayInputStream(Charset.forName(encoding).encode(passwd).array());
byte[] buffer = new byte[NCHARS];
int byteCount;
while ((byteCount = in.read(buffer)) > 0) {
digester.update(buffer, 0, byteCount);
}
keyBytes = digester.digest();
}
catch(Exception e){
status = "Error in key generation: " + e.toString();
}

// Initilizing the crypto engine
try {
cipher = Cipher.getInstance(algorithm);
}
catch(Exception e){
status = "Error in intialization: " + e.toString();
}
secretKeySpec = new SecretKeySpec(keyBytes, "AES");
ivParameterSpec = new IvParameterSpec(keyBytes);

}

还有两个有效

// Getting status
public static String getStatus(){return status;}

public static String getFilename() {
Log.i("[QCOLOCRYPT]","Getting the file name");
return "The Filename is: " + fileName;
}

非工作函数没有被调用,因为它的调试消息没有被打印,而我得到了日志消息和其他两个的返回值。 Logcat 似乎没有显示任何错误,所以我不知所措。我说错了吗?

最佳答案

好的,所以这不完全是一个答案。它更像是一种解决方法,我让函数工作,但我能做到的唯一方法是返回一个字符串。我试过使用 (Arguments)I 的 Integer;作为签名,但我遇到了同样的问题。我修改了 Java 函数以返回状态字符串,更改了签名以反射(reflect)这一点,并且一切正常。虽然很奇怪。

关于java - 未使用 QAndroidJniObject 调用的三个函数之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47472283/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com