0

NFCタグに保存されたリンクから動画を再生するアプリを作りました。これらのビデオへのリンクは、このhttp://commonsware.com/misc/test2.3gpのように .3gp または .mp4 などのように終了します。

私のマニフェストはこのようなものです

<activity
            android:name="com.example.nfcv1.VedioView"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="http" 
                        android:pathPrefix="/.3gp"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIDEOVIEW" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity> 

しかし、問題は、このアクティビティが www.google.com などのあらゆる種類のリンクで開始されることです。このアクティビティを、ビデオへのリンクが検出された場合にのみ開くように制限し、それ以外の場合はブラウザーに移動してリンクを開きます。

4

1 に答える 1

1

ファイル拡張子の表記を確認してください。むしろ"android:pathPrefix=*.3pg"と書きたいと思います。

さらに、ドキュメントはホスト要素を要求します。したがって、データ要素にandroid:host="*"のようなものを追加しようとするかもしれません。

ドキュメントには次のように記載されています。

Android:パスパターン

URI のパス部分。path 属性は、Intent オブジェクトの完全なパスと照合される完全なパスを指定します。pathPrefix 属性は、Intent オブジェクト内のパスの最初の部分のみと照合される部分パスを指定します。pathPattern 属性は、Intent オブジェクトの完全なパスと一致する完全なパスを指定しますが、次のワイルドカードを含めることができます。

アスタリスク ('*') は、直前の文字が 0 から複数回出現するシーケンスに一致します。アスタリスクが続くピリオド (「.*」) は、0 から複数の文字の任意のシーケンスに一致します。

文字列が XML から読み取られるとき (パターンとして解析される前) に '\' がエスケープ文字として使用されるため、二重エスケープが必要になります。たとえば、リテラル '*' は "\\ *" であり、リテラルの '\' は "\\\\" と記述されます。これは基本的に、Java コードで文字列を構築する場合に記述する必要があるものと同じです。

これら 3 種類のパターンの詳細については、PatternMatcher クラスの PATTERN_LITERAL、PATTERN_PREFIX、および PATTERN_SIMPLE_GLOB の説明を参照してください。

これらの属性は、フィルタにスキームおよびホスト属性も指定されている場合にのみ意味があります。

参照: data 要素の Android ドキュメント

于 2013-07-09T12:36:19.823 に答える