2

アプリケーションがcontentフィルター スキームに応答するのに問題があります。

を持っていますintent-filter

        <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:host="*"
                android:mimeType="*/*"
                android:pathPattern=".*\\.riley"
                android:scheme="content" />
        </intent-filter>

ただし、Gmail から .riley ファイルを開くことはできません。スキームを削除すると、次のようになります。

        <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:host="*"
                android:mimeType="*/*"
                android:pathPattern=".*\\.riley" />
        </intent-filter>

これで、gmail からファイルが開きます。content私はそれがスキームから来ているに違いないと考えました。だから私は自分の意図を次のように記録しました:

System.out.println("Intent\nScheme: " + intent.getScheme() + "\nAction: " + intent.getAction() + "\nFlags: " + intent.getFlags() + "\nPackage: " + intent.getPackage() + "\nMIME: " + intent.getType() + "\nData: " + intent.getData());
System.out.println("Intent\nScheme: " + intentUri.getScheme() + "\nPath: " + intentUri.getPath() + "\nHost: " + intentUri.getHost() + "\nTo String: " + intentUri.toString());

そして、私のログは次のようになります。

03-26 11:17:44.123: I/System.out(8796): Intent
03-26 11:17:44.123: I/System.out(8796): Scheme: content
03-26 11:17:44.123: I/System.out(8796): Action: android.intent.action.VIEW
03-26 11:17:44.123: I/System.out(8796): Flags: 50855937
03-26 11:17:44.123: I/System.out(8796): Package: null
03-26 11:17:44.123: I/System.out(8796): MIME: application/vnd.riley
03-26 11:17:44.123: I/System.out(8796): Data: content://gmail-ls/emailaddress@gmail.com/messages/5277/attachments/0.1.7/BEST/false
03-26 11:17:44.133: I/System.out(8796): Intent
03-26 11:17:44.133: I/System.out(8796): Scheme: content
03-26 11:17:44.133: I/System.out(8796): Path: /emailaddress@gmail.com/messages/5277/attachments/0.1.7/BEST/false
03-26 11:17:44.133: I/System.out(8796): Host: gmail-ls
03-26 11:17:44.133: I/System.out(8796): To String: content://gmail-ls/emailaddress@gmail.com/messages/5277/attachments/0.1.7/BEST/false

パスが実際には「.riley」で終わっていないため、これは非常に混乱しますが、「.riley」をチェックするように MIME タイプを設定すると、intent-filter動作が停止します。

intent-filterこれを適切に開くにはどうすればよいですか?最初の例が機能しないのはなぜですか?

4

0 に答える 0