2016-02-19 87 views
0

我正在通过Intent调用捕获图像函数。在非活动Java类中实现onActivityResult

我已经成功实现了来自非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偏好类别接口。 因此,我的工作是对InvocationHanlder链接。

+0

我想你可以做同样的事情,你叫做startActivityForResult。尽管您必须在您的事件onActivityResult中注册一个函数,因为您无法在此实现它。 –

+0

看到这个答案如果有帮助: http://stackoverflow.com/a/21793981/2555668 –

+0

NativeActivity&Activity。请再次查看我的代码。 – NovusMobile

回答

0

有两种选择 -

  1. 您可以创建NovusBaseActivity扩展Activity,你不会需要通过context。在NovusBaseActivity你可以开始意图,并在onActivityResult得到结果。而不是将活动上下文传递到NovusAPI,而是延伸NovusBaseActivity

  2. 正如评论的回答表明 - 在活动的onActivityResult,调用结果使用以前创建调用captureImageNovusAPI例如从NovusAPI处理方法。

+0

如何强制一个Activity调用该方法? – Carpetfizz