在JNI中实现下面的代码?
我可以在android中使用Java下面的代码获取服务名称。在JNI中实现下面的代码?
//packageToCheck - pass the package name
PackageInfo servicePackage = null;
servicePackage = pm.getPackageInfo(packageToCheck, PackageManager.GET_SERVICES);
ServiceInfo[] sinfo = servicePackage.services;
for(ServiceInfo Servinfo : sinfo){
System.out.println("Service Name:" + Servinfo.name + "for Package:" + packageToCheck);
}
现在,我试图用C代码在JNI中实现。关于如何实施的任何见解或示例代码?谢谢!!!我的第一个尝试是:jclass cls =(* env) - > GetObjectClass(env,obj);
__android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "1\n");
jmethodID mid = (*env)->GetMethodID(env, cls, "getPackageManager", "()Landroid/content/pm/PackageManager;");
__android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "2\n");
jobject packageManager = (*env)->CallObjectMethod(env, obj, mid);
__android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "3\n");
// this.getPackageName()
mid = (*env)->GetMethodID(env, cls, "getPackageName", "()Ljava/lang/String;");
__android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "4\n");
jstring packageName = (jstring) (*env)->CallObjectMethod(env, obj, mid);
__android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "5\n");
只输出“2”后挂在LogCat中。不知道有什么问题!
这是一个非常简单的例子,你可以检查出来并运行它。
布赖恩,这是一个非常简单的JNI例子。不过,我很乐意为我的第一次尝试获得任何实现。谢谢!!! – user1416662 2012-08-05 13:15:15
@ user1416662忘记它。这不是免费的编码服务。你将得到的是对你*代码的批评。 – EJP 2012-08-05 21:52:20
;)哈哈,PLZ做我的工作,我向客户开账单。 – 2012-08-06 11:13:14
另一个简单的例子目的是什么?你的第一次尝试在哪里? – EJP 2012-08-05 07:51:12
我的第一次尝试是这样的: – user1416662 2012-08-05 13:11:33
您的第一次尝试与您试图在JNI中重新实现的Java代码没有任何相似之处,但您仍然没有给出任何*理由*因为想要这样做。我看不到这一点。 – EJP 2012-08-05 21:53:48