2016-02-19 4 views
0

Я работаю над функцией захвата изображения через Intent call.Реализация onActivityResult в классе nonActivity Java

Мне удалось реализовать startActivityforResult из класса non-Activity. Я получаю активность Контекст.

Теперь я хочу получить onActivityResult в том же классе java. Поскольку я знаю, что для этого метода требуется класс 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); 

     } 

EDIT:

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, вызовите результат метода обработки с использованием NovusAPINovusAPI экземпляра, который вы создали ранее для вызова captureImage.

+0

Как заставить действие вызвать метод? – Carpetfizz