728x90
반응형
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | package com.android.test; import android.app.Application; import android.content.Context; import android.util.Log; import android.widget.Toast; public class DemoApplication extends Application { private static DemoApplication sInstance; @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); sInstance = this; } public static DemoApplication getInstance() { //Log.d("TR", "DemoApplication.getInstance:" + Log.getStackTraceString(new Throwable())); return sInstance; } public static void forgeryDetected(){ Toast.makeText(sInstance, "ForgeryDetected", Toast.LENGTH_SHORT).show(); } public static void DebugDetected(){ Toast.makeText(sInstance, "DebugDetected", Toast.LENGTH_SHORT).show(); } public static void RootDetected(){ Toast.makeText(sInstance, "RootDetected", Toast.LENGTH_SHORT).show(); } } | cs |
DemoApplication이라는 이름의 java 파일을 생성.
이름 바꿔도 됨.
1 2 3 | jclass clsApplication = env->FindClass("com/android/test/DemoApplication"); jmethodID midGetInstance = env->GetStaticMethodID(clsApplication, "forgeryDetected", "()V"); env->CallStaticVoidMethod(clsApplication, midGetInstance); | cs |
JNI에서 해당 java 파일 읽어와서(FindClass) 메소드 주소를 얻고(GetStaticMethodID) 메소드를 실행한다(CallStaticVoidMethod).
사용하려는 메소드가 void 형 반환값이기에 CallStaticVoidMethod를 사용했고 자료형에 따라 함수가 조금씩 다르다.
이 정도만 기억하면 나중엔 키워드로 검색하기 쉽겠지.
728x90
반응형
'프로그래밍 > Android' 카테고리의 다른 글
how to solve "ERROR: Cause: unable to find valid certification path to requested target" (1) | 2019.06.05 |
---|---|
Xamarin Toast (0) | 2016.08.25 |
Xamrin Touch Event (0) | 2016.08.24 |
Xamrin 안드로이드 앱 배포 방법 (0) | 2016.08.19 |
how to use so files in Android JNI -2- (3) | 2016.08.03 |
how to use so files in Android JNI -1- (3) | 2016.08.02 |
Xamrin 설치 (0) | 2016.07.26 |
댓글