امین مهدی نژاد 2,142 ارسال شده در 22 دی، ۱۳۹۵ اشتراک گذاری ارسال شده در 22 دی، ۱۳۹۵ چند تا از قطعه کدهایی که در CPP که نوشته و به عنوان نمونه میشه ازش استفاده کرد رو در اینجا قرار خواهم داد تابع newInstance این تابع رو برای یکی از کتابخونه هام نوشتم.کارش هم ساخت آبجکت بر اساس نام کلاس- فرمت سازنده و آرایه ای از آرگومان های مورد نیاز سازنده است #include <jni.h> #ifdef __cplusplus extern "C" { #endif JNIEXPORT jobject JNICALL Java_ir_amin_irConstructor_newInstance (JNIEnv* pEnv, jobject pThis,jstring jstrCls,jstring jstrArg,jobjectArray jargList) { jsize len = pEnv->GetArrayLength(jargList); jvalue values[len]; for (int i=0; i<len; i++) { values[i].l=pEnv->GetObjectArrayElement(jargList,i); } jclass cls = pEnv->FindClass(pEnv->GetStringUTFChars(jstrCls, 0)); jmethodID jmtdID = pEnv->GetMethodID(cls, "<init>", pEnv->GetStringUTFChars(jstrArg,0)); return pEnv->NewObjectA(cls, jmtdID, values); } #ifdef __cplusplus } #endif توضیحات: خط زیر سایز آرایه آرگومان ها رو مشخص می کنه jsize len = pEnv->GetArrayLength(jargList); قسمت زیر هم آرایه از اشیا رو به آرایه ای از نوع jvalue تبدیل می کنه jvalue values[len]; for (int i=0; i<len; i++) { values[i].l=pEnv->GetObjectArrayElement(jargList,i); } و در نهایت مشخص کردن کلاس-متد سازنده و ساختن یک شی از کلاس مورد نظر jclass cls = pEnv->FindClass(pEnv->GetStringUTFChars(jstrCls, 0)); jmethodID jmtdID = pEnv->GetMethodID(cls, "<init>", pEnv->GetStringUTFChars(jstrArg,0)); return pEnv->NewObjectA(cls, jmtdID, values); با ساخت یک آبجکت از کلاسی در CPP میشه به راحتی از متدهای اون استفاده کرد و به این ترتیب کلیه API اندروید در دسترس و می تونین قسمتی از کدهای جاوا و یا بیسیک خودتون رو به بستر cPP منتقل کنید تا امنیت آپ خودتون بیشتر بشه. «موفق باشید.» لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.