Вызовите startActivityForResult, чтобы получить изображение в галерее из пользовательского представления группы просмотра. Убить мое приложение. - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть два действия A и B. В упражнении A я нажимаю кнопку, чтобы перейти к занятию B. В занятии B у меня есть настраиваемое представление группы просмотра.В этом окне я хочу получить изображение в галерее телефона, поэтому я использовал ((Activity) context).startActivityForResult(i, 1);, чтобы перейти в мою галерею.Но после этого мое приложение будет убито (активность B уничтожена).

Кто-то сказал, что я должен вызвать startActivityForResult для основной операции (операция B), поэтому в пользовательском представлении я отправляю широковещательную рассылку операции B., Я получил действие, затем вызываю startActivityForResult для выбора изображения в галерее, но оно не работает.

Случай 1: когда выбирается изображение в галерее из customview

   public void draw_multi(MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:

            Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            ((Activity) mContext).startActivityForResult(intent, REQUEST_GET_SINGLE_FILE);
            break;
        case MotionEvent.ACTION_MOVE:

            break;
        case MotionEvent.ACTION_UP:

            break;
        default:
            break;
    }

}

Случай 2: отправкатрансляция из обычного просмотра и получателя в действии B

public void draw_multi(MotionEvent event) {
    float x = event.getX() / scale;
    float y = event.getY() / scale;

    Intent i = new Intent();
    i.setAction(ACTION_FILTER);
    i.putExtra("action", ACTION_SHOW_NOTIFICATION_MUPDF);
    i.putExtra("xLoca", x);
    i.putExtra("yLocal", y);
    i.putExtra("pageNumber", this.getPageNumber());

    mContext.sendBroadcast(i);

}

Получатель в действии B

    private class PDFReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getExtras().containsKey("action")) {

            String resultAction = intent.getExtras().getString("action");
            switch (resultAction) {
                case ACTION_SHOW_NOTIFICATION_MUPDF:
                    Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                    ((Activity) context).startActivityForResult(i, 1);
                    break;
            }
        }

    }

}

Это журнал ошибок, я не выбрал изображение из списка

java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 3299828 bytes
    at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:160)
    at android.os.Handler.handleCallback(Handler.java:891)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:207)
    at android.app.ActivityThread.main(ActivityThread.java:7539)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)
 Caused by: android.os.TransactionTooLargeException: data parcel size 3299828 bytes
    at android.os.BinderProxy.transactNative(Native Method)
    at android.os.BinderProxy.transact(Binder.java:1147)
    at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:3981)
    at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:144)
    at android.os.Handler.handleCallback(Handler.java:891) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:207) 
    at android.app.ActivityThread.main(ActivityThread.java:7539) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958) 2019-04-18 23:54:37.148 10237-10237/tve.tve.vnulic I/Process: Sending signal. PID: 10237 SIG: 9

Как я могу это исправить?Пожалуйста, помогите мне, спасибо !!!

...