我正在通过Intent调用捕获图像功能。
我成功地从非Activity类实现了startActivityforResult。我正在那里获得活动。
现在,我希望在同一个java类中接收onActivityResult。 据我所知,必须让Activity类接收这种方法。
有可能吗?
我尝试拨打Java Proxy,InvocationHandler link,但我没有取得成功。
代码:
public class NovusAPI {
private Context mContext;
private NativeActivity nativeactivity;
static final int REQUEST_IMAGE_CAPTURE = 1;
/**
* Constructor. Save reference to NativeActivity object
**/
NovusAPI(NativeActivity ref) {
nativeactivity = ref;
Log.d(TAG, "NovusAPI constructor called");
}
public void captureImage(){
Log.d(TAG, "Image Capture Call");
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "novus");
values.put(MediaStore.Images.Media.DESCRIPTION, "novus camera capture");
// capture image camera
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
nativeactivity.startActivityForResult(intent,REQUEST_IMAGE_CAPTURE);
}
修改
PreferenceManager Class:
public interface OnActivityResultListener {
/**
* See Activity's onActivityResult.
*
* @return Whether the request code was handled (in which case
* subsequent listeners will not be called.
*/
boolean onActivityResult(int requestCode, int resultCode, Intent data);
}
OnActivityResultListener是Android Preference类的界面。 所以,我这样做是为了InvocationHanlder链接。
答案 0 :(得分:0)
有两个选项 -
您可以创建展开NovusBaseActivity
的{{1}},您不需要传递Activity
。在context
中,您可以启动意图并在NovusBaseActivity
中获得结果。而不是将活动上下文传递给onActivityResult
,而是扩展NovusAPI
。
正如评论的回答所示 -
在活动的NovusBaseActivity
中,使用之前创建的onActivityResult
实例从NovusAPI
调用结果处理方法,以调用NovusAPI
。