0

アプリで Gmail の添付ファイル (.gcsb 拡張子) を (初めて - 初めて) 読み取ろうとしています。インテント フィルタは次のようになります。

<intent-filter>
    <action android:name="android.intent.action.VIEW"></action>
    <category android:name="android.intent.category.DEFAULT"></category>
    <category android:name="android.intent.category.BROWSABLE"></category>
    <data android:pathPattern="*.gcsb"></data>
    <data android:mimeType="application/*"></data>
</intent-filter>

そして、Gmailの添付ファイルの横に「ダウンロード」ボタンと「プレビュー」ボタンが表示されるように見えます(そのフィルターがないと、ボタンは表示されません)。

アクティビティ (onCreate() / onRestart()) では、次のことを行います。

....
Intent  intent = getIntent();

if (!Intent.ACTION_VIEW.equals(intent.getAction())) {
    //  Deal with the file from gmail here
}

....

これがアクティビティを開始する原因となったのがgmailであるかどうかを確認します。

ただし、intent.getAction() は常に android.intent.action.MAIN に解決されるため、何もしません。アクティビティには別のインテント フィルタがあります。

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

アプリの起動用ですが、gmail から android.intent.action.VIEW が表示されない理由がわかりません。

4

1 に答える 1

0

答えは、アクティビティがさまざまな理由で「単一インスタンス」に設定されたようです。これは、再びフォアグラウンドに移動する間、gmail によって作成された意図ではなく、最初に開始された意図で戻ってくることを意味します。

「単一インスタンス」属性を削除すると、正しいインテントを使用できるようになりました。

于 2013-07-05T06:02:47.793 に答える