mirror of https://github.com/axmolengine/axmol.git
[android] CCUserDefault works ok on android2.2
This commit is contained in:
parent
a50fe1b95b
commit
d8f3b0c25b
|
@ -25,6 +25,7 @@ THE SOFTWARE.
|
||||||
NS_CC_BEGIN;
|
NS_CC_BEGIN;
|
||||||
|
|
||||||
#include "CCCommon.h"
|
#include "CCCommon.h"
|
||||||
|
#include "Cocos2dJni.h"
|
||||||
|
|
||||||
#define MAX_PATH 256
|
#define MAX_PATH 256
|
||||||
|
|
||||||
|
@ -107,9 +108,8 @@ int CCFileUtils::ccLoadFileIntoMemory(const char *filename, unsigned char **out)
|
||||||
string CCFileUtils::getWriteablePath()
|
string CCFileUtils::getWriteablePath()
|
||||||
{
|
{
|
||||||
// the path is: /data/data/ + package name
|
// the path is: /data/data/ + package name
|
||||||
string dir("/data/data");
|
string dir("/data/data/");
|
||||||
size_t length = s_strResourcePath.rfind(".") - s_strResourcePath.rfind("/");
|
return dir + getPackageNameJNI() + "/" ;
|
||||||
return dir + s_strResourcePath.substr(s_strResourcePath.rfind("/"), length) + "/" ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_CC_END;
|
NS_CC_END;
|
||||||
|
|
|
@ -375,4 +375,51 @@ extern "C"
|
||||||
{
|
{
|
||||||
cocos2d::CCIMEDispatcher::sharedDispatcher()->dispatchDeleteBackward();
|
cocos2d::CCIMEDispatcher::sharedDispatcher()->dispatchDeleteBackward();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
// get package name
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
static char* jstringTostring(JNIEnv* env, jstring jstr)
|
||||||
|
{
|
||||||
|
char* rtn = NULL;
|
||||||
|
|
||||||
|
// convert jstring to byte array
|
||||||
|
jclass clsstring = env->FindClass("java/lang/String");
|
||||||
|
jstring strencode = env->NewStringUTF("utf-8");
|
||||||
|
jmethodID mid = env->GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B");
|
||||||
|
jbyteArray barr= (jbyteArray)env->CallObjectMethod(jstr, mid, strencode);
|
||||||
|
jsize alen = env->GetArrayLength(barr);
|
||||||
|
jbyte* ba = env->GetByteArrayElements(barr, JNI_FALSE);
|
||||||
|
|
||||||
|
// copy byte array into char[]
|
||||||
|
if (alen > 0)
|
||||||
|
{
|
||||||
|
rtn = (char*)malloc(alen + 1);
|
||||||
|
memcpy(rtn, ba, alen);
|
||||||
|
rtn[alen] = 0;
|
||||||
|
}
|
||||||
|
env->ReleaseByteArrayElements(barr, ba, 0);
|
||||||
|
|
||||||
|
return rtn;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* getPackageNameJNI()
|
||||||
|
{
|
||||||
|
TMethodJNI t;
|
||||||
|
const char* ret = NULL;
|
||||||
|
|
||||||
|
if (getMethodID(t
|
||||||
|
, "org/cocos2dx/lib/Cocos2dxActivity"
|
||||||
|
, "getCocos2dxPackageName"
|
||||||
|
, "()Ljava/lang/String;"))
|
||||||
|
{
|
||||||
|
jstring str = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID);
|
||||||
|
ret = jstringTostring(t.env, str);
|
||||||
|
|
||||||
|
LOGD("package name %s", ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ extern "C"
|
||||||
void disableAccelerometerJNI();
|
void disableAccelerometerJNI();
|
||||||
void showMessageBoxJNI(const char * pszMsg, const char * pszTitle);
|
void showMessageBoxJNI(const char * pszMsg, const char * pszTitle);
|
||||||
void setKeyboardStateJNI(int bOpen);
|
void setKeyboardStateJNI(int bOpen);
|
||||||
|
const char* getPackageNameJNI();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // __ANDROID_COCOS2D_JNI_H__
|
#endif // __ANDROID_COCOS2D_JNI_H__
|
||||||
|
|
|
@ -64,6 +64,7 @@ public class Cocos2dxActivity extends Activity{
|
||||||
private static boolean accelerometerEnabled = false;
|
private static boolean accelerometerEnabled = false;
|
||||||
private static Handler handler;
|
private static Handler handler;
|
||||||
private final static int HANDLER_SHOW_DIALOG = 1;
|
private final static int HANDLER_SHOW_DIALOG = 1;
|
||||||
|
private static String packageName;
|
||||||
|
|
||||||
private static native void nativeSetPaths(String apkPath);
|
private static native void nativeSetPaths(String apkPath);
|
||||||
|
|
||||||
|
@ -171,6 +172,10 @@ public class Cocos2dxActivity extends Activity{
|
||||||
backgroundMusicPlayer.end();
|
backgroundMusicPlayer.end();
|
||||||
soundPlayer.end();
|
soundPlayer.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getCocos2dxPackageName(){
|
||||||
|
return packageName;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
|
@ -195,6 +200,8 @@ public class Cocos2dxActivity extends Activity{
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setPackgeName(String packageName) {
|
protected void setPackgeName(String packageName) {
|
||||||
|
Cocos2dxActivity.packageName = packageName;
|
||||||
|
|
||||||
String apkFilePath = "";
|
String apkFilePath = "";
|
||||||
ApplicationInfo appInfo = null;
|
ApplicationInfo appInfo = null;
|
||||||
PackageManager packMgmr = getApplication().getPackageManager();
|
PackageManager packMgmr = getApplication().getPackageManager();
|
||||||
|
|
Loading…
Reference in New Issue