【问题标题】:Implementing onActivityResult in a nonActivity Java Class [duplicate]在非活动 Java 类中实现 onActivityResult [重复]
【发布时间】:2016-05-31 14:58:37
【问题描述】:

我正在努力通过 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 链接的工作。

【问题讨论】:

  • 我认为你可以像你所说的 startActivityForResult 那样做。虽然您必须在事件 onActivityResult 中注册一个函数,因为您无法在此处实现它。
  • 如果有帮助,请查看此答案:stackoverflow.com/a/21793981/2555668
  • 本地活动和活动。请再次检查我的代码。

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


【解决方案1】:

有两种选择——

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

  2. 正如评论答案中所建议的那样 - 在活动的onActivityResult 中,使用您之前创建的NovusAPI 实例从NovusAPI 调用结果处理方法来调用captureImage

【讨论】:

  • 如何强制 Activity 调用该方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
  • 2013-07-28
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
相关资源
最近更新 更多