आप हमेशा निर्देशिका को एक्सेस कर सकते हैं जिसमें आपका ऐप रखा गया है।
इस निर्देशिका में आमतौर पर है:
data/data/<Your_package_name_usually com.android.appName>/files/<your_filename>
लेकिन बेहतर getFilesDir()
करने के लिए उपयोग एंड्रॉयड के भविष्य संस्करण में परिवर्तन के साथ वैध filepath करता है।
आप के बजाय बाह्य भंडारण का उपयोग करना चाहते हैं, तो आप अपने अनुप्रयोग लाभ अनुमति के लिए प्रकट में कोड के इस लाइन का ध्यान रखें। अन्यथा
getExternalStorageDirectory(); //usually : /sdcard/<your_filename>
, आप डिवाइस जड़ और पूरे फाइल सिस्टम में पहुँच प्राप्त कर सकते हैं:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
फिर sdcard निर्देशिका का उपयोग करें। लेकिन आपको अपने सभी ऐप उपयोगकर्ताओं को अपने डिवाइस पर से पहले अपने डिवाइस पर रूट पहुंच प्राप्त करने का अनुरोध करना होगा। कुछ गेम चीजों को करने के इस तरीके का उपयोग करते हैं, लेकिन मैं इसकी अनुशंसा नहीं करता। यदि आप अभी भी ऐसा करना चाहते हैं, तो एंड्रॉइड के लिए Superuser
ऐप देखें, यह मुफ़्त है और भरोसेमंद है।
एक बार जब आप एंड्रॉयड निर्देशिका है, बस एक JNI देशी विधि है कि एक jstring पैरामीटर प्राप्त बनाते हैं, और आप इसे सेट अप अपने मूल कोड के अंदर। इसे एक std :: स्ट्रिंग में कनवर्ट करें, और आप इसे fopen() के साथ उपयोग करने के लिए तैयार होंगे।
//Inside your java activity
File f = this.getApplicationContext().getFilesDir();
LibLoader.setupArchiveDir(f.toString());
//Inside your JNI wrapper
JNIEXPORT bool JNICALL Java_com_android_appName_LibLoader_setupArchiveDir(JNIEnv * env, jobject obj, jstring dir)
{
const char* temp = env->GetStringUTFChars(dir, NULL);
std::string stringDir(temp);
// Will be receive as a std::string inside C++ code
MyNativeObjectInC++->SetupArchiveDir(stringDir);
}
संपादित करें:
आप manualy की जरूरत हो सकती पहली बार पर इसका इस्तेमाल करने में सक्षम होने से पहले सी में/फ़ाइलें बनाता है:
int result_code = mkdir("/data/data/com.app/files/", 0770)
चीयर्स !
इस लिंक में उत्तर दिया गया है: –
vgokul129