gpt4 book ai didi

Android StartActivityForResult 没有启动 Activity ?

转载 作者:行者123 更新时间:2023-11-29 02:00:09 26 4
gpt4 key购买 nike

我正在开发一款可自动发送大量电子邮件的应用程序,但我在获取允许用户选择要启动的文件的 Activity 时遇到了问题。代码中的一切似乎都是正确的,但是当我逐步执行说明时, Activity 似乎根本就没有开始过。这是我的代码:

调用 Activity ,EmailSender:

public class EmailSender extends Activity{
//declarations
Intent fileIntent;

@Override
public void onCreate(Bundle savedInstanceState) {

//instantiations
String pathName;
fileIntent = new Intent(EmailSender.this, FileChooser.class);

//email sending functions that work fine

try {
GmailSender attachmentSender = new GmailSender(gsn, gpw)

String[] toArr = new String[6]; //array of recipient addresses
toArr[0] = efull;
toArr[1] = afull;
toArr[2] = ysn;
toArr[3] = csn;
toArr[4] = hsn;
toArr[5] = gsn;

attachmentSender.setSubject("Attachment Download Test");
attachmentSender.setFrom(gsn);
attachmentSender.setTo(toArr);
attachmentSender.setBody("Attachment Downloading Test");

startActivityForResult(fileIntent, 1);
attachmentSender.addAttachment(pathName);
attachmentSender.send();
}
catch (Exception e) {
Log.e("EmailSender", e.getMessage(), e);
}
finish();

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == 1)
{
if(resultCode == RESULT_OK)
pathName = data.getStringExtra("result");
}
if(resultCode == RESULT_CANCELED)
{
pathName = "";
}
}
}

文件选择器来自这个问题中发布的库:Android file chooser

下面只贴出了扩展File Chooser类的相关方法:

public class FileChooser extends FileChooserActivity    {

// TAG for log messages.
private static final String TAG = "FileSelectorTestActivity";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// We must check to ensure that the calling Intent is not Intent.ACTION_GET_CONTENT
if (!isIntentGetContent()) {
// Display the file chooser with all file types
showFileChooser();
}
}

@Override
protected void onFileSelect(File file) {
if (file != null) {
//final Context context = getApplicationContext();

// Get the path of the Selected File.
final String path = file.getAbsolutePath();
Log.d(TAG, "File path: " + path);

Intent returnIntent = new Intent();
returnIntent.putExtra("result", path);
setResult(RESULT_OK, returnIntent);
finish();
}
}
}

最后,这是声明被调用类的 list fragment :

<activity
android:name=".FileChooser"
android:label="Choose a file"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.GET_CONTENT" />

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.OPENABLE" />

<data android:mimeType="*/*" />
</intent-filter>
</activity>

在 EmailSender 尝试附加空文件名之前,我没有在 Logcat 中收到任何异常。调试器几乎只是逐步执行来自 Android API 的指令,直到它返回到 EmailSender Activity 并从它停止的地方继续。我唯一一次可能能够选择文件的指示是在抛出并记录异常并且代码在 finish() 之后暂停。此时,将打开一个弹出窗口,要求选择一个文件选择程序(应该发生的是自动使用内置文件选择器)。

如果有人能帮助我了解发生了什么以及为什么没有首先调用 FileChooser Activity ,我将非常感激。我已经找到了很多关于 OnActivityResult() 问题的资源,但不幸的是,它甚至没有那么远。谢谢你的帮助!

最佳答案

嗯,在您的 try catch block 之后,您将完成该 Activity 。删除 finish() 行,这样您就可以 startActivityForResult 并返回一些内容。

关于Android StartActivityForResult 没有启动 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13093247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com