在我的活动中,我正在通过主要活动调用第二个活动startActivityForResult.在我的第二个活动中,有一些方法可以完成此活动(可能没有结果),但是,只有其中一个返回结果.
例如,从主要活动我称之为第二个.在这项活动中,我正在检查手机的某些功能,例如是否有相机.如果它没有,那么我将关闭此活动.此外,在准备期间MediaRecorder或MediaPlayer如果出现问题,我将关闭此活动.
如果其设备有摄像头并完全录制,则在用户点击完成按钮后录制视频后,我会将结果(录制视频的地址)发送回主要活动.
如何检查主要活动的结果?
android android-intent android-activity startactivityforresult
我有四个活动,比如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
是否可以知道某些活动是否已被调用结果,使用startActivityForResult()或者是否仅仅开始使用startActivity()?
我需要控制它,如果它调用结果,行为会有所不同.
今天我切换到新的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
我正在使用 Java 为 Android 开发 Flutter 插件。当我调用MethodChannel时,我需要调用另一个Android Intent。如果我使用本机活动,那就很简单,因为我可以在同一个类上调用startActivityForResult和实现该方法。onActivityResult
但是,当我开发 Flutter 插件时,我可以实现FlutterPlugin、MethodCallHandler和ActivityAware接口,但如何启动一个新活动并监听异步结果?
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
我想知道我是否正确理解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函数来检查返回哪个活动,不是吗?
问题,
'onActivityResult(Int, Int, Intent?): Unit' 已弃用。在 Java 中已弃用
根据应用内更新文档,给定的方法需要onActivityResult,但已弃用。
我找不到有关如何使用registerForActivityResult应用内更新的任何详细信息。
PS:我正在使用Jetpack compose。相关答案会有帮助。
注意:
我很清楚这不是错误而是警告。我正在使用 Jetpack compose,因此这对我来说是一个问题,因为活动结果会使代码在 Compose 之外。
android startactivityforresult android-jetpack-compose in-app-update
使用此代码,我可以轻松地动态插入一些布局.布局包含一个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
Android Fragment中startActivityForResult()vs 之间的区别是什么getActivity().startActivityForResult()?onActivityForResult()在片段中调用时的行为差异是什么?
我使用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