gpt4 book ai didi

android - "iwconfig"命令需要 root android 设备吗?

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:18 25 4
gpt4 key购买 nike

我需要在我的 android 设备上创建 iwconfig 命令,所以我编写了 C++ 代码并通过 ndk 将其加入到本地方法中,这是我的方法:

jstring Java_com_example_ndk1_MainActivity_exec(JNIEnv* env, jobject javaThis , jstring cmd) {
const char * res;

jboolean isCopy;
res = env->GetStringUTFChars(cmd, &isCopy);

if (isCopy == JNI_TRUE) {
(env)->ReleaseStringUTFChars(cmd, res);
}

std::string result = exec(res);
return (env)->NewStringUTF((const char* )result.c_str());
}

但是当我调用这个方法并传递“iwconfig”时,应用程序停止并导致异常:

03-03 00:07:15.674: E/AndroidRuntime(11872): FATAL EXCEPTION: main
03-03 00:07:15.674: E/AndroidRuntime(11872): java.lang.IllegalStateException: Could not execute method of the activity
03-03 00:07:15.674: E/AndroidRuntime(11872): at android.view.View$1.onClick(View.java:3660)
03-03 00:07:15.674: E/AndroidRuntime(11872): at android.view.View.performClick(View.java:4162)
03-03 00:07:15.674: E/AndroidRuntime(11872): at android.view.View$PerformClick.run(View.java:17082)
03-03 00:07:15.674: E/AndroidRuntime(11872): at android.os.Handler.handleCallback(Handler.java:615)
03-03 00:07:15.674: E/AndroidRuntime(11872): at android.os.Handler.dispatchMessage(Handler.java:92)
03-03 00:07:15.674: E/AndroidRuntime(11872): at android.os.Looper.loop(Looper.java:137)
03-03 00:07:15.674: E/AndroidRuntime(11872): at android.app.ActivityThread.main(ActivityThread.java:4856)
03-03 00:07:15.674: E/AndroidRuntime(11872): at java.lang.reflect.Method.invokeNative(Native Method)
03-03 00:07:15.674: E/AndroidRuntime(11872): at java.lang.reflect.Method.invoke(Method.java:511)
03-03 00:07:15.674: E/AndroidRuntime(11872): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
03-03 00:07:15.674: E/AndroidRuntime(11872): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
03-03 00:07:15.674: E/AndroidRuntime(11872): at dalvik.system.NativeStart.main(Native Method)
03-03 00:07:15.674: E/AndroidRuntime(11872): Caused by: java.lang.reflect.InvocationTargetException
03-03 00:07:15.674: E/AndroidRuntime(11872): at java.lang.reflect.Method.invokeNative(Native Method)
03-03 00:07:15.674: E/AndroidRuntime(11872): at java.lang.reflect.Method.invoke(Method.java:511)
03-03 00:07:15.674: E/AndroidRuntime(11872): at android.view.View$1.onClick(View.java:3655)
03-03 00:07:15.674: E/AndroidRuntime(11872): ... 11 more
03-03 00:07:15.674: E/AndroidRuntime(11872): Caused by: java.lang.UnsatisfiedLinkError: Native method not found: com.example.ndk1.MainActivity.exec:(Ljava/lang/String;)Ljava/lang/String;
03-03 00:07:15.674: E/AndroidRuntime(11872): at com.example.ndk1.MainActivity.exec(Native Method)
03-03 00:07:15.674: E/AndroidRuntime(11872): at com.example.ndk1.MainActivity.command(MainActivity.java:34)
03-03 00:07:15.674: E/AndroidRuntime(11872): ... 14 more

最佳答案

您看到的错误是“UnsatisfiedLinkError”——这意味着您在使用 JNI 时做错了什么。

你编译你的原生库了吗?你能在lib\armeabi\中看到它吗?您是否使用“System.loadLibrary”在 Java 代码中加载了 native 库?

当然,除此之外,您假设 iwconfig 实际上是 Android linux 中的有效二进制文件/命令,我担心在大多数情况下 iwconfig 不存在。

关于权限,我想如果你打算在界面列表中查看,那么你将拥有足够的权限。但是如果你想改变一些东西,它不会让你没有root(你见过很多可以在你不情愿的情况下让你连接到wifi的应用程序吗?)

您还可以使用 Java、Ex 执行命令。

Runtime.getRuntime().exec(new String[] { "ls", "\tmp"});

因为您的 Java 代码和 native 代码在相同的权限上下文中运行,所以在何处运行都无关紧要。希望对您有所帮助。

关于android - "iwconfig"命令需要 root android 设备吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15179615/

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