1

次のような方法でa を構築する方法はありNdefMessageますか:

  • 私のアプリ受信側デバイスにインストールされている場合は、そのリンクを開きます (たとえば、カスタム URI スキームを使用します)。
  • アプリインストールされていない場合は、モバイル Web サイトの同じページへのリンクを使用してデフォルトの Web ブラウザーを開きます

私はこれらを別々に動作させましたが、2 つNdefRecordを aに入れNdefMessage 、Android Beam 経由でプッシュされるように設定すると、レシーバー デバイスはこれら 2 つのレコードを含むセレクターを表示します。これらのいずれかをクリックすると、適切なアプリ (my app または Chrome) に移動します。このセレクターをバイパスして、サポートされている最初のリンクを自動的に起動する方法はありますか?

4

2 に答える 2

1

いいえ、ありません。

ただし、ここには 2 つの回避策があります。

  1. Android は、特定のパッケージを指す、いわゆる ApplicationRecords をサポートしています。インストールされていない場合、Android は Play ストアを開いてアプリをインストールします。
  2. ビーム経由で http:// uri をプッシュするだけで、アプリでこの uri も解決できます。リンクを初めて「開く」ときに、ブラウザーとアプリのどちらかを選択するように求めるセレクターが表示されます。
于 2014-02-24T11:54:07.030 に答える
0

AndroidApplicationRecords を使用する必要がない場合は、モバイル ページを指す単一の NDEF レコードを使用できます。

たとえば、モバイル ページがhttp://www.example.com/mypageの場合、これを URI レコードとして NDEF メッセージに保存します。

+-----------------------------------------+
| WKT:URI | http://www.example.com/mypage |
+-----------------------------------------+

次に、アプリケーションがインストールされていない場合は、モバイル デバイスで Web ブラウザーがトリガーされます。

このレコードを取得してアプリを起動するには、アプリのマニフェストに適切なインテント フィルターを追加する必要があります。

<activity ...>
    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPrefix="/mypage" />
    </intent-filter>
</activity>

アプリケーションに追加のデータを渡したい場合は、もちろん、カスタム データを含む 2 番目のレコード (URI レコードの後に​​) を追加できます。その場合、NDEF メッセージは次のようになります。

+-----------------------------------------+
| WKT:URI | http://www.example.com/mypage |
+-----------------------------------------+
| EXT:example.com:mytype | myparameters   |
+-----------------------------------------+
| ...                                     |

そのメッセージの最初のレコードは引き続き URI であるため、アクティビティは引き続き既存のインテント フィルターでトリガーされます。アクティビティ内で、インテントから NDEF メッセージを取得し、2 番目のレコード/その他のレコードからパラメーターを処理できます。

于 2014-02-28T13:11:16.413 に答える