//////////////////////////////////////////////////////////////////////////
//Java code snippet
//get APK's versionCode in AndroidManifest.xml
public int getVersionCode() {
int versionCode = 1;
try{
PackageInfo packageInfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);
versionCode = packageInfo.versionCode;
}catch (NameNotFoundException e) {
Log.d(TAG, "cannot get package info.");
}
return versionCode;
}

// --------------------------------------------------------------------
// C code snippet: helper function to get package name from Java
// --------------------------------------------------------------------
static bool Android_GetPackageName(char* outPackageName, size_t length) { Android_App* app = Android_GetApp();
ANativeActivity*activity = app->activity; JNIEnv* env = activity->env;
//note: we need to attach dalvik VM to current thread, as it is not main thread
JavaVM* vm = activity->vm;
if ( (*vm)->GetEnv(vm, (void **)&env, JNI_VERSION_1_6) < )
(*vm)->AttachCurrentThread(vm, &env, NULL); //get package name from Activity Class(context)
jclass android_content_Context = (*env)->GetObjectClass(env, activity->clazz);
jmethodID midGetPackageName = (*env)->GetMethodID(env, android_content_Context, "getPackageName", "()Ljava/lang/String;");
jstring PackageName= (jstring)(*env)->CallObjectMethod(env, activity->clazz, midGetPackageName); bool ret = false;
if( PackageName != null ) {
// get UTF8 string & copy to dest
const char* charBuff = (*env)->GetStringUTFChars(env, PackageName, NULL);
strncpy(outPackageName, charBuff, length);
outPackageName[length-1]='\0'; (*env)->ReleaseStringUTFChars(PackageName, charBuff);
(*env)->DeleteLocalRef(env, PackageName);
}
(*env)->DeleteLocalRef(env, android_content_Context); return ret;
} // --------------------------------------------------------------------
// helper function to get package version code from Java
// --------------------------------------------------------------------
static int Android_GetVersionCode() { Android_App* app = Android_GetApp();
ANativeActivity*activity = app->activity; //get version code from Java
JNIEnv* env = activity->env;
//note: we need to attach dalvik VM to current thread, as it is not main thread
JavaVM* vm = activity->vm;
if ( (*vm)->GetEnv(vm, (void **)&env, JNI_VERSION_1_6) < )
(*vm)->AttachCurrentThread(vm, &env, NULL); jclass ActivityClass = (*env)->GetObjectClass(env, activity->clazz);
jmethodID java_method = (*env)->GetMethodID(env, ActivityClass, (char8*)"getVersionCode", (char8*)"()I");
assert( java_method != NULL );
jint ret = (*env)->CallIntMethod(env, activity->clazz , java_method);
(*env)->DeleteLocalRef(env, ActivityClass);
return (int)ret;
}

通过以上方法可以动态生成OBB文件名称, 而不使用硬编码.

最新文章

  1. 【GO】GO语言学习笔记三
  2. C#小小总结(面向对象)
  3. android时区
  4. gulp.js简单操作
  5. C++控制台应用程序之贪吃蛇(改进版)
  6. ☀【JS】eval
  7. Asp.net中request.QueryString与request.Params的区别 【转】
  8. hasClass方法 动画方法说明
  9. 类似jquery的一个demo
  10. iOS一个开发系列中 - UIButton 使用摘要
  11. 永洪BI配置测试及遇到的一些问题
  12. mysql5.6 online ddl—索引
  13. Spring 学习笔记 Bean的作用域
  14. Android Demo Android ActionBarCompat-ListPopupMenu
  15. node.js cluster模式启用方式
  16. Spring MVC — @RequestMapping原理讲解-1
  17. POJ 2636
  18. Java虚拟机--内存模型与线程
  19. python---django中orm的使用(4)字段,参数(on_delete重点)补充,一对多,一对一,多对多
  20. stickey-footer实现footer固定页面底部

热门文章

  1. 极路由1s手工安装ss插件
  2. Android Material Design:基于CoordinatorLayout实现向上滚动导航条ToolBar滚出、向下滚动导航条滚出
  3. Delphi的&quot;Invalid pointer operation&quot;异常的解决办法
  4. 压力测试之TCPP
  5. 007-python基础-pyc是什么
  6. Python脚本控制的WebDriver 常用操作 &lt;十一&gt; 操作测试对象
  7. jQuery对象与DOM对象
  8. bzoj 1798 [Ahoi2009]Seq 维护序列seq
  9. 记录bigdesk中ElasticSearch的性能参数
  10. 解压vmlinuz和解压initrd(initramfs)