2011-11-16 19 views
14

私はアンドロイドアプリケーションインテントフィルタ(ACTION_VIEW)を使用してファイルを開き、アプリケーションにインポートします。添付ファイルをGmailのアプリケーションからアプリケーションにダウンロードします。一部のファイルタイプ(jpg、png、txt)は正しく保存されていますが、一部のファイルタイプ(doc、xls、pptなど)は正しく保存されていません。他のアプリ(Dropbox)からは動作していますが、gmailアプリでは動作していないため、自分のアクティビティに正しいインテントフィルタがあると思います。これにはどんな解決策がありますか?AndroidのGmailアプリケーションから添付ファイルをダウンロードするインテントフィルタ

答えて

7

私は、ダウンロードとプレビューボタンが(スキームラインを削除し、それを試してみる)自分の意思でスキームデータフィルタを除去することにより、GmailでAndroid上でポップアップ表示させることができました。しかし

<intent-filter> 
<action android:name="android.intent.action.VIEW" /> 
<category android:name="android.intent.category.DEFAULT" /> 
<category android:name="android.intent.category.BROWSABLE" /> 
<data android:scheme="file" /> 
<data android:mimeType="*/*" /> 
<data android:pathPattern=".*\\.ext" /> 
<data android:host="*" /> 
</intent-filter> 

、 Androidのドキュメントのとおり、「スキームがインテントフィルタに指定されていない場合、他のすべてのURI属性は無視されます。スキームとURI属性が削除されていると、インテントをフィルタリングする他の唯一の方法はMime型を使用することです。カスタムファイル拡張子には登録されたMIMEタイプがないことがわかります。参考のため

、URIの形式は次のとおりです。

  • スキーム://ホスト:ポート/パススキームなしだから、
  • Pathprefixは
  • pathPattern

、そのすべて落ちる。上記を発見した後、私は明らかにしようとしました - スキームのために "*"を使用し、さらに "。*"を試しました。どちらも働いていない。他の誰かが私の試練を仕掛けることを願っています。しかし、私はそれが正しい計画を選択することと関係していると信じています。残念ながら、私が知っている唯一のスキームはhttp httpsのコンテンツとファイルであり、上記のどれも魔法の弾丸ではありません。

EDIT ::::::::

私は昨日、これを解決しました。私の解決策を参照してください。

<intent-filter> 
<action android:name="android.intent.action.VIEW" /> 
<category android:name="android.intent.category.DEFAULT" /> 
<data android:mimeType="application/*" host="*" android:pathPattern=".*.ext" android:scheme="content" /> 
</intent-filter> 

この意図は、Gmailがダウンロード/プレビューボタンを表示するようになります。実際には、これはまた、.extファイルが添付ファイルとして通常の電子メールクライアントに送信されるときにあなたのアプリを開くようにもなります。

+0

プレビューボタンで公開されているGMailの「コンテンツ」URIはどのようなアクセス許可が必要ですか?私のアプリケーションにはパーミッションはなく、オープンしようとするとパーミッションの例外が発生します。私は、[ダウンロード]ボタンによって公開された 'ファイル'データを読むのに問題はありません。 – user1139880

+0

ユーザー - 考えません。私は私のアプリで次の権限を持っていますが、Gmailのプレビュー/ダウンロード用ではなく、異なる用途のために追加しました。投稿したインテントがGmailのダウンロード/プレビューを表示させる原因になっていることを確認できますか?私は自分自身でFroyo、Gingerbread、Ice Creamのサンドイッチで試したことが分かっています。 –

+2

これは、通知バーに新しいGmailを取得したときにいつでもフィルタリングを開始するようにフィルタリングすることになります。他の誰かがその問題を抱えていますか?これを引き起こすのは間違いなくこのフィルターです。 – BriCo84

0

これはgoogleの "Gmail添付ファイルの意図フィルタ"に関連するトップ質問の1つなので、私の研究では私の研究の結果を投稿する私の場合は上記の答えが見つかりませんでした。

Gmailからの意図に登録するためには、我々はコンテンツの方式をサポートする必要があります。私がテストした添付ファイルの場合は

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:scheme="content" android:mimeType="*" android:host="*" /> 
</intent-filter> 

、URIは、それがGmailで表示された場合でも、ファイルの拡張子が含まれていませんでした、そのため、android:pathPatternを使用すると、Gmailのインテントを受信できなくなりました。

私はすべてのmimeTypesへの登録が過度のものであるため、インテントオブジェクト(Java側)の内容をデバッグし、アプリケーションtext/plainで十分であることを確認しました。あなたの申請)。最終的なインテントフィルタは次のようになります。

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:scheme="content" android:mimeType="text/plain" android:host="*" /> 
</intent-filter> 
+0

** android:scheme = "file" **についてはどうですか?それは必要ではないですか? –

関連する問題