1

SGF ファイルを処理したいアプリケーションがあります。マニフェストには次のフィルターがあります。

        <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="http"/>
            <data android:host="*"/>
            <data android:pathPattern=".*\\.sgf"/>
        </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:scheme="http"/>
            <data android:mimeType="application/x-go-sgf"/>
        </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:scheme="file"/>
            <data android:mimeType="*/*" />
            <data android:host="*" />
            <data android:pathPattern=".*\\.sgf"/>
        </intent-filter>

アイデアは、ブラウザまたはファイルから開いた SGF ファイルを処理することです。これは最近まで機能していました。いつ機能しなくなったのか正確にはわかりませんが、コードの変更によるものではありません。アクティビティを開始しようとしている別のアプリケーションがあり、例外が発生しています。

Intent を処理するアクティビティが見つかりません%20Life-and-Death%20Problems/6%20-%20Five-move%20problems%20-%20Black%20to%20kill/prob144.sgf }

このインテントは上記のフィルターのいずれかに一致するべきではありませんか? ブラウザーまたはファイル エクスプローラーから SGF ファイルを開くとアクティビティが開始されますが、上記のようにプログラムで実行しても機能しなくなりました。

4

1 に答える 1

0

SGF ファイルを開くアプリも持っていますが、問題なく動作します。あなたのコードと比較して、追加mimeTypehost属性を追加しました:

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:host="*" />
            <data android:scheme="file" />
            <data android:pathPattern=".*\\.sgf" />
            <data android:mimeType="*/*" />
        </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="*" />
            <data android:scheme="http" />
            <data android:pathPattern=".*\\.sgf" />
            <data android:mimeType="*/*" />
        </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="*" />
            <data android:scheme="http" />
            <data android:mimeType="application/x-go-sgf" />
        </intent-filter>

それでもうまくいかない場合は、ファイルパスに問題がある可能性があります。パスに複数のpathPatternドットが含まれている場合、 はうまく機能しません。この質問を確認してください:

ファイル名の他の場所にピリオドが存在する場合、ファイル拡張子に一致する pathPattern は機能しませんか?

于 2012-09-01T12:48:46.637 に答える