簡體   English   中英

Android StartActivityForResult無法開始活動?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM