2011-09-02 7 views
5

NativeActivity를 사용하는 응용 프로그램이 있습니다. 컨텍스트가 필요한 작업 (예 : IMEI를 쿼리하기 위해 TelephonyManager에 액세스)을 수행하기 위해 Java로 호출하고 싶습니다.NativeActivity에서 컨텍스트 얻기

내 활동을위한 유효한 Context를 얻으려면 어떻게해야합니까?

ANativeActivity 구조체에는 JavaVM, JNI 환경 등과 같이 내 응용 프로그램에 유용한 다양한 데이터가 들어 있습니다. 또한 NativeActivity의 클래스 객체를 가리키는 jobject도 포함되어 있습니다. 여기에 포함되지 않은 것은 NativeActivity의 인스턴스을 가리키는 작업입니다. 나는 struct android_app에서 유용한 것을 볼 수 없다.

이렇게해야합니다. 어떤 아이디어?

+0

가능한 이중 질문. 이것 좀 봐 http://stackoverflow.com/questions/4449864/access-android-context-in-ndk-application – weakwire

+0

아니, 그 질문은 이전 스타일의 NDK를 참조하십시오 (여기서 그것은 Java로부터 엄격하게 호출되었습니다). 저는 새로운 스타일의 NativeActivity NDK를 사용하고 있습니다 (기본 앱은 기본 코드로 작성되어 Java로 호출됩니다). –

답변

4

ANativeActivity 구조체의 clazz 구성원에도 불구하고 구조체는 실제로 android.app.NativeActivity 인스턴스를 가리키고 있습니다.
네이티브 액티비티에서 Java 코드로 JNI 호출을 사용하는 예제는 this post을 확인하십시오.

+0

헤더에있는 문서는 클래스라고해도 --- 그렇습니다. 이제 실제로 사용하려고합니다. 클래스가 아닌 인스턴스입니다. 감사! –

+0

네, 맞습니다. 이 문서는 clazz 필드를 'The NativeActivity Java class'로 설명하기 때문에 혼란 스럽다. 유일한 약한 힌트는'clclass' 타입이다 :'jclass' 대신에'jobject'. 그럼에도 불구하고 문서 개선을위한 버그/기능 요청은 게시 할 가치가 있습니다. – Idolon

관련 문제