标签: startactivityforresult

如何在Android上管理startActivityForResult?

在我的活动中,我正在通过主要活动调用第二个活动startActivityForResult.在我的第二个活动中,有一些方法可以完成此活动(可能没有结果),但是,只有其中一个返回结果.

例如,从主要活动我称之为第二个.在这项活动中,我正在检查手机的某些功能,例如是否有相机.如果它没有,那么我将关闭此活动.此外,在准备期间MediaRecorderMediaPlayer如果出现问题,我将关闭此活动.

如果其设备有摄像头并完全录制,则在用户点击完成按钮后录制视频后,我会将结果(录制视频的地址)发送回主要活动.

如何检查主要活动的结果?

android android-intent android-activity startactivityforresult

935
推荐指数
9
解决办法
66万
查看次数

使用startActivityForResult,如何在子活动中获取requestCode?

我有四个活动,比如A,B,C和D.我的情况是A将通过startActivityForResult启动活动B.

startActivityForResult(new Intent(this,B.class),ONE);
Run Code Online (Sandbox Code Playgroud)

在其他情况下,我将B与其他情况.喜欢

 startActivityForResult(new Intent(this,B.class),TWO);
Run Code Online (Sandbox Code Playgroud)

在B中,我需要根据requestCode调用C或D. 即如果ONE需要启动C else D.
所以我需要知道如何检查子Activity中的requestCode(这里是B).
换句话说,我想获得活动B开始的请求代码.

android android-intent android-activity startactivityforresult

81
推荐指数
3
解决办法
6万
查看次数

检查是否已为结果调用活动

是否可以知道某些活动是否已被调用结果,使用startActivityForResult()或者是否仅仅开始使用startActivity()

我需要控制它,如果它调用结果,行为会有所不同.

android android-activity startactivityforresult

73
推荐指数
1
解决办法
1万
查看次数

新结果 API 错误:请求代码只能使用低 16 位

今天我切换到新的ResultAPI,我遇到了这个错误:

java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode
    at androidx.fragment.app.FragmentActivity.checkForValidRequestCode(FragmentActivity.java:715)
    at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:673)
    at androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:234)
    at androidx.activity.ComponentActivity$2.onLaunch(ComponentActivity.java:207)
    at androidx.activity.result.ActivityResultRegistry$3.launch(ActivityResultRegistry.java:147)
    at androidx.activity.result.ActivityResultLauncher.launch(ActivityResultLauncher.java:42)
    at .MainActivity.getVideo(MainActivity.kt:61)
    at .MainActivity.access$getVideo(MainActivity.kt:18)
    at .MainActivity$onCreate$2.onClick(MainActivity.kt:42)
    at android.view.View.performClick(View.java:5232)
    at android.view.View$PerformClick.run(View.java:21289)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:168)
    at android.app.ActivityThread.main(ActivityThread.java:5885)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
Run Code Online (Sandbox Code Playgroud)

执行这些行时:

private val takeFile = registerForActivityResult(GetContent()) {
    Log.e("MainActivity", "fileName: $it")
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    btn_get_video.setOnClickListener {
        getVideo()
    }

}


private fun getVideo() {
    takeFile.launch("video/*") …
Run Code Online (Sandbox Code Playgroud)

android onactivityresult startactivityforresult android-jetpack

15
推荐指数
1
解决办法
3297
查看次数

使用 FlutterPlugin 时如何监听 startActivityForResult 调用?

我正在使用 Java 为 Android 开发 Flutter 插件。当我调用MethodChannel时,我需要调用另一个Android Intent。如果我使用本机活动,那就很简单,因为我可以在同一个类上调用startActivityForResult和实现该方法。onActivityResult

但是,当我开发 Flutter 插件时,我可以实现FlutterPluginMethodCallHandlerActivityAware接口,但如何启动一个新活动并监听异步结果?

Java代码:

public class GetnetPlugin implements FlutterPlugin, MethodCallHandler, ActivityAware {

  private MethodChannel channel;
  private Context context;
  private Activity activity;

  @Override
  public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
    context = flutterPluginBinding.getApplicationContext();
    channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "com.example/method");
    channel.setMethodCallHandler(this);
  }

  @Override
  public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
    channel.setMethodCallHandler(null);
  }

  @Override
  public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
    switch (call.method){
      case "makePayment":
        makePayment();
        result.success(true); …
Run Code Online (Sandbox Code Playgroud)

android-intent flutter startactivityforresult flutter-method-channel

12
推荐指数
1
解决办法
4883
查看次数

Android:requestCode和resultCode

我想知道我是否正确理解requestCode和resultCode的概念?基本上,我有一个与活动相关的任意整数(requestCode).例如,在记事本教程中,我们有

private static final int ACTIVITY_CREATE=0;
private static final int ACTIVITY_EDIT=1;
Run Code Online (Sandbox Code Playgroud)

然后我们使用startActivityforResult(intent,requestCode)来启动一个活动,例如"创建笔记"活动.我们在该活动中执行某些操作并返回resultCode.

在父活动中,我们使用onActivityResult(requestCode,resultCode,intent)检测resultCode.然后我们可以使用requestCode来查看返回的活动,使用resultCode查看该活动的结果,以及使用intent的"extras"来获取返回的数据.


内置的resultCodes有什么特别之处,比如RESULT_CANCELED吗?在开发人员网站上的文件似乎表明,内置的结果仅仅是整数.

在我看来,这可能会变得非常混乱?例如,如果我有10个可能的活动要启动,那么我必须有一个巨大的 onActivityResult函数来检查返回哪个活动,不是吗?

android startactivityforresult

11
推荐指数
1
解决办法
9256
查看次数

如何获取应用内更新的句柄更新结果

问题,

'onActivityResult(Int, Int, Intent?): Unit' 已弃用。在 Java 中已弃用

根据应用内更新文档,给定的方法需要onActivityResult,但已弃用。

我找不到有关如何使用registerForActivityResult应用内更新的任何详细信息。

PS:我正在使用Jetpack compose。相关答案会有帮助。

注意:
我很清楚这不是错误而是警告。我正在使用 Jetpack compose,因此这对我来说是一个问题,因为活动结果会使代码在 Compose 之外。

android startactivityforresult android-jetpack-compose in-app-update

10
推荐指数
0
解决办法
841
查看次数

Android从onActivityResult接收值并将其设置为Button

使用此代码,我可以轻松地动态插入一些布局.布局包含一个Button我想要启动的startActivityForResult.现在,当我得到结果(文本)时,我想将其设置为Button.

btnAggiungiCampo.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        PopupMenu popup = new PopupMenu(this, btnAggiungiCampo);
        popup.getMenuInflater().inflate(R.menu.menu_campi, popup.getMenu());
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
                View child = null;
                if (item.getTitle().equals(getString(R.string.Text))) {
                    child = getLayoutInflater().inflate(R.layout.inflate_campo, null);
                    rlCampi.addView(child);

                    Button btnGeneraPSW = (Button) child.findViewById(R.id.imageButton3);
                                btnGeneraPSW.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View v) {
                                        Intent inte = new Intent(this, Genera_password.class);
                                        startActivityForResult(inte, REQ_CODE_ACT1);
                                    }
                                });
                }
            }
        }
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode, …
Run Code Online (Sandbox Code Playgroud)

android android-button android-activity startactivityforresult

8
推荐指数
2
解决办法
3184
查看次数

Android片段中的startActivityForResult()vs getActivity().startActivityForResult()

Android Fragment中startActivityForResult()vs 之间的区别是什么getActivity().startActivityForResult()onActivityForResult()在片段中调用时的行为差异是什么?

android android-fragments startactivityforresult

8
推荐指数
1
解决办法
749
查看次数

如何正确使用registerForActivityResult?获取“LifecycleOwners 必须在开始之前调用寄存器”

我使用registerForActivityResult就像:

package com.example.livedata

import android.Manifest
import android.app.Activity
import android.app.AlertDialog
import android.app.Dialog
import android.content.ActivityNotFoundException
import android.content.Intent
import android.graphics.Bitmap
import android.net.Uri
import android.os.Bundle
import android.provider.Settings
import android.view.View
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import com.example.livedata.databinding.ActivityAddBinding
import com.example.livedata.databinding.DialogCustomImageSelectionBinding


class AddActivity : AppCompatActivity(), View.OnClickListener {
    private lateinit var binding: ActivityAddBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityAddBinding.inflate(layoutInflater)
        setContentView(binding.root)
        setupActionBar()

        binding.photoAdd.setOnClickListener(this)
    }

    private fun setupActionBar() {
        setSupportActionBar(binding.toolbar)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        binding.toolbar.setNavigationOnClickListener { onBackPressed() }
    }

    override fun onClick(v: View?) {
        if (v != …
Run Code Online (Sandbox Code Playgroud)

android android-activity kotlin startactivityforresult android-jetpack

8
推荐指数
2
解决办法
3万
查看次数