Android에서 인 텐트를 사용하여 NDK를 통해 이미지 경로를 얻으려고합니다. 갤러리에서 이미지를 고를 의도가 있습니다. NDK를 통해 어떻게 호출하고 결과를 C++로 되돌릴 수 있습니까? 아래 코드는 내 MainActivity 클래스의 일부입니다. 는 C++ 측면에서NDK를 통해 인 텐트를 호출하고 결과를 얻습니다.
public void pickImage(Activity activity)
{
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Image"), 200);
}
String selectedFilePath = "";
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Uri path = data.getData();
selectedFilePath = path.toString();
}
public String getUserSelectedFile() {
return selectedFilePath;
}
나는 아래의 코드를 사용하여 의도를 호출 할 수 있지만, 어떻게하여 onActivityResult의 결과를 얻을 수 있나요? 내가 처음 실행을 얻는 것은 selectedFilePath의 빈 문자열이지만, 의도를 두 번째 호출 할 때는 전에 문자열을 가져옵니다. pickImage가 getUserSelectedFile을 차단하고 있다고 생각합니다.
jclass clazz(env->GetObjectClass(activity));
jmethodID method_id = env->GetMethodID(clazz, "pickImage", "()V");
env->CallVoidMethod(activity, method_id);
jmethodID method_id2 = env->GetMethodID(clazz, "getUserSelectedFile", "()Ljava/lang/String;");
jobject result = env->CallObjectMethod(activity, method_id2);
const char *strReturn = env->GetStringUTFChars((jstring) result, 0);
보세요. http://stackoverflow.com/questions/5198105/calling-a-java-method-from-c-in-android. 받아 들여진 대답뿐 아니라 다른 것들도. 데이터를 양방향으로 전달하는 방법을 볼 수 있습니다. –
활동 결과를 얻는 방법은 설명하지 않습니다. – sabotage3d
예. 특히 http://stackoverflow.com/a/35976648/3866010. 클래스를 찾고 메소드를 찾으면 메소드를 호출하고 메소드가 객체를 리턴합니다. 따라서 사용자가 해당 인 텐트를 호출 한 후 이미지를 선택하면 이미지의 경로를 저장하고 해당 예제에 표시된 Java 메서드를 호출하는 위조 된 C/C++ 메서드를 호출해야합니다. –