在非活动Java类

时间:2016-02-19 06:12:37

标签: java android proxy android-ndk native-activity

我正在通过Intent调用捕获图像功能。

我成功地从非Activity类实现了startActivityforResult。我正在那里获得活动。

现在,我希望在同一个java类中接收onActivityResult。 据我所知,必须让Activity类接收这种方法。

有可能吗?

我尝试拨打Java ProxyInvocationHandler 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链接。

1 个答案:

答案 0 :(得分:0)

有两个选项 -

  1. 您可以创建展开NovusBaseActivity的{​​{1}},您不需要传递Activity。在context中,您可以启动意图并在NovusBaseActivity中获得结果。而不是将活动上下文传递给onActivityResult,而是扩展NovusAPI

  2. 正如评论的回答所示 - 在活动的NovusBaseActivity中,使用之前创建的onActivityResult实例从NovusAPI调用结果处理方法,以调用NovusAPI