![](/img/trans.png)
[英]Android: startActivityForResult crashes during starting new activity
[英]Android StartActivityForResult not starting the 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文件選擇器
下面僅發布擴展文件選擇器的類的相關方法:
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();
}
}
}
最后,這是清單中聲明被調用類的代碼段:
<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活動,並從中斷處繼續。 我唯一有可能選擇文件的提示是,在throw()之后引發了異常並記錄了異常並且代碼已暫停。 此時,將打開一個彈出窗口,要求選擇文件選擇程序(應該發生的是自動使用內置文件選擇器)。
如果有人可以幫助我了解發生了什么以及為什么不首先調用FileChooser活動,我將非常感激。 我發現了很多有關OnActivityResult()問題的資源,但不幸的是,它甚至還沒有解決。 謝謝你的幫助!
嗯,在您的try catch塊之后,您正在完成活動。 刪除finish()
行,以便您可以啟動startActivityForResult
並返回一些內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.