JNI:如何创建子字符串?如何获取来电者';谁的包裹名?在Android上从Java调用C代码

JNI:如何创建子字符串?如何获取来电者';谁的包裹名?在Android上从Java调用C代码,android,android-ndk,java-native-interface,Android,Android Ndk,Java Native Interface,我可以从Android上的Java调用下面一个非常简单的JNI方法。但我不知道下一步该怎么办 JNIEXPORT jstring JNICALL Java_com_test_ndktest_MyActivity_HelloJNI (JNIEnv *env, jobject obj) { (*env)->NewStringUTF(env, "Hello from JNI"); } 我想做的是两件事 什么是兼容Java的子字符串方法 我想限制我打电话 我可能能得到来电者

我可以从Android上的Java调用下面一个非常简单的JNI方法。但我不知道下一步该怎么办

JNIEXPORT jstring JNICALL Java_com_test_ndktest_MyActivity_HelloJNI
  (JNIEnv *env, jobject obj)
  {
    (*env)->NewStringUTF(env, "Hello from JNI");
  } 
我想做的是两件事

  • 什么是兼容Java的子字符串方法
  • 我想限制我打电话
  • 我可能能得到来电者的包裹名称。我想避免不速之客打电话

    如果您能给我一些提示或建议,我将不胜感激


    谢谢

    为什么不用Java来做呢?对我来说,更好的方法是用java做这些事情。对不起,如果我不明白的话

    正如您所知,您可以使用C/C++。你看到这个了吗
    或者?

    第二个问题是什么?有人会偷走你的SO并在他们的项目中使用它吗?@Seva Alekseyev是的。我担心的是有人窃听我的秘密钥匙。我相信这样做比JAVA安全得多。你同意吗?如果你知道其他的方法,我很高兴知道这一点。几乎不可能防止一个坚定的黑客。包名检查,一方面,不是一个严密的措施;他们可以根据NDK库的期望来命名包,并进行类似的调试。本机代码比Java更难调试,但绝对不是不可能的。如果钥匙被偷了,你的生意会有多糟?@Seva-Alekseyev谢谢你的补充评论。是的,我完全同意你的看法。我只是想提高标准,反对逆向工程和开裂。关于包名的定义,我理解你所说的,但是使用包名只是一种选择。我们将实施混合密闭措施。如果我们的钥匙被盗,某人可以拥有特定数据的读访问权限。该密钥只有少数权限,以防万一。谢谢您的回复。对不起,我的问题解释得不够清楚。我在考虑用模糊处理来保存我的密钥。您知道Java很容易反编译类文件。@zono至于Java,您可以将密钥保存在密钥库中:这里有一些关于在android中加密的更有趣的事情,等等:当然,您可以使用NDK中的一些算法加密密钥并保存到SD卡。以防万一你还没看到:非常感谢!正在密钥库中保存密钥!?太好了。下面的链接可能有用。我将努力实施它。
    String str1 = new String("Hello World!");
    String new_str1 = str1.substring(2, 5);
    System.out.println(new_str1); // llo