除了在SD卡上,还有其他方法可以在其他地方写入文件吗?
我在文件系统上尝试了很多不同的路径但是fopen总是返回NULL,除了我在/ sdcard /中写入/读取的任何文件...
还有别的东西相当于:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)
那允许你在文件系统上写一些东西?
我需要从本机端获取我的Android应用程序的名称,如下所示:
android.content.context context=(android.content.context) this;//current activiy
Resources appR =context.getResources();
String packageName=context.getPackageName();
int id=appR.getIdentifier("app_name","string",packageName );
CharSequence txt = appR.getText(id);
Run Code Online (Sandbox Code Playgroud)
我的本机代码:
jstring Java_com_AnalyticToolC_AnalyticToolActivity_JNISendData(JNIEnv* env,jobject entryObject,jobject contxt)
{
char *realAppName;
realAppName=(char *)malloc(16 * 1024);
jclass android_content_Context =(*env)->GetObjectClass(env, contxt);
jmethodID midGetPackageName = (*env)->GetMethodID(env, android_content_Context, "getPackageName", "()Ljava/lang/String");
jstring packageName=(*env)->CallObjectMethod(env, contxt, midGetPackageName);
jmethodID midGetResources = (*env)->GetMethodID(env, android_content_Context, "getResources", "()L");
jobject jResource=(*env)->CallObjectMethod(env, context, midGetResources);
jclass resource_Class=(*env)->GetObjectClass(env, jResource);
jmethodID midGetIdentifier = (*env)->GetMethodID(env, resource_Class, "getIdentifier", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String)I");
jstring app_name=(*env)->NewStringUTF(env,"app_name");
jstring TypeName=(*env)->NewStringUTF(env,"string");
int id=(*env)->CallObjectMethod(env, jResource, midGetIdentifier,app_name,TypeName,packageName);
jmethodID midGetAppName = (*env)->GetMethodID(env, resource_Class,"getText","(I)Ljava/lang/String");
jstring …
Run Code Online (Sandbox Code Playgroud) 我正在使用 NDK 为 Android 构建 C++ 代码。我的代码将用作应用程序开发人员的外部 SDK。
是否可以从本机代码访问应用程序的数据路径?
一种选择是使用 JNI 调用 JVM 并查找此信息,但是由于我正在编写库代码,因此我不确定我的 SDK 不会用于所有本机应用程序 (NativeActivity)。
实现这一目标的最佳选择是什么?