首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未使用QAndroidJniObject调用的三个函数之一

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

Stack Overflow用户
提问于 2017-11-24 19:23:50
回答 0查看 41关注 0票数 1

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

代码语言:javascript
复制
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代码:

不工作的那个:

代码语言:javascript
复制
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);

}

和两个可以工作的

代码语言:javascript
复制
// 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似乎没有显示任何错误,所以我很困惑。我说错了吗?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47472283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档