強力なスキーム「android-app://」でサイト内リンクのクリックからIntentを自在に投げる

例えば, YouTubeのURLがあって,

http://www.youtube.com/watch?v=dQw4w9WgXcQ

WEBブラウザ向けにリンクを貼る場合

<a href="http://www.youtube.com/watch?v=dQw4w9WgXcQ">→ Go Movie</a>

と書く.

→ Go Movie

Android端末上では, これをクリックするとデフォルトのアプリ設定がされてない場合は暗黙的インテントが発行されて,

1. 該当アプリ選択ダイアログ

のあと,

2-a. ブラウザでYouTubeサイトの動画が表示される.
2-b. YouTubeアプリで動画が表示される.

となる.

ブラウザアプリとYouTubeアプリをインストールはほとんどの人ががインストールしているだろう.

20151015-083102

20151015-083210

そのリンク記述を

android-app://{package_id}[/{scheme}[/{host}[/{path}]]][#Intent;{...}]

の書式で書く. 書式内 {package_id} は必須.

<a href="android-app://com.google.android.youtube/http/www.youtube.com/watch?v=dQw4w9WgXcQ">→ Go Movie from android-app</a>

これをクリックすると, YouTubeアプリに対して明示的インテントが発行されて, 該当する動画が表示される.

→ Go Movie from android-app

これは以下をセットした明示的インテントを投げるのと等価.

Action:	 ACTION_VIEW
Data:    http://www.youtube.com/watch?v=dQw4w9WgXcQ
Package: com.google.android.youtube

もし YouTube アプリをインストールしていない場合は PlayStoreアプリが起動してYouTubeアプリの画面が表示されてそのままインストールすることができる.

20151015-084402

この書式を使うと

「該当アプリの選択」
「アプリのデフォルトの設定のクリア」

というユーザからみて煩わしい動作がなくなる上, 明示的インテントの

「該当するパッケージがみつからない」

という場合に対しての開発側の手間も省ける.

書式にあるようにこんな記述も可能.

<a href="android-app://com.example.app/
  #Intent;action=com.example.MY_ACTION;
  i.some_int=100;S.some_str=hello;end">...

これは以下明示的インンテントと等価.

Action:	 com.example.MY_ACTION
Package: com.example.app
Extras:	 some_int=(int)100
         some_str=(String)hello

便利だが, いつからこんなのあったんだ?

スキームはスキームなのかっ!?

注意: ブラウザ互換

Intent | Android Developers

Cross Reference: ../Intent.java


最近の「Android System WebView」で追加されている機能

少しWebViewのまわりの挙動が変化している気がしたので調べてみた.

これ.

20151011-142959

AndroidシステムのWebView - Google Play の Android アプリ

Android 5.0 以降に対して, コンポーネントとしてのWebViewを切り離してPlayStoreで更新していくというもの.

このパッケージを入れている場合と入れてない場合の WebView にどれくらい差がでてきているのか.

Android 5.1 実機で簡単に機能を比べる.

…
mWebView = (WebView) findViewById(R.id.web_view);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("https://html5test.com/");
…

HTML5test - How well does your browser support HTML5?

入れていない場合.

20151011-143135

入れている場合.

20151011-143336

10ポイント以上の差がある.

ポイントの大きなもの順に追加された機能をみる.

Service Workers (+10)

20151011-143539

Service Workers Nightly

Introduction to Service Worker: How to use Service Worker - HTML5 Rocks

Service Workerは、最近動きのあるブラウザテクノロジーの中で最もホットな新機能の一つです。ネットワークプロキシとしても働くService Workerは、従来のAppCacheの欠点を克服し、真のオフラインファーストを実現できる技術として期待されています。

そんな今大注目の Service Workerですが、実はAppCacheの代用用途だけでなくバックグラウンドのコンテンツ同期やプッシュ通知などの応用が検討されています。

Service WorkerとHTTP/2が切り開く新しいWeb Pushの世界 - ぼちぼち日記

Clipboard API and events (+5)

20151011-143855

Clipboard API and events

Readable streams (+3)

20151011-144101

Streams Standard

Content Security Policy 1.1 (+2)

20151011-144308

Content Security Policy Level 2

セキュリティ上の機能だけでなく, コンテンツ同期やプッシュ通知, クリップボードやストリーム配信関連機能などアプリ利用者に直接影響するものが追加されているようです.

多数のAndroidユーザーにも分かりやすい「入れておいたほうがいいアプリ」となってくるのだろうと思います.

AndroidシステムのWebView - Google Play の Android アプリ


Android Nexus のバッテリーを交換する

前回からのつづきです.

Android端末のバッテリーが膨らんできた場合

バッテリーですが, 今回の端末の場合、海外ではたくさん低価格で見つかりますが、なかなか日本に発送してくれるところを見つけられませんでした。
海外から購入する場合は送料がかかります。

ざっくり雰囲気で

海外のAmazon 1000円(送料別)
ヤフオク/ショッピング 2000円
amazon.co.jp 5000円

これくらいバッテリーの価格に差がありました.

今回は, ヤフーショッピングで2150円のツール付を購入しました.

IMG_20151011_130019.763

IMG_20151011_130119.391

IMG_20151011_130413.251

膨張した以前のバッテリーと比べると3倍以上厚みが違います. そりゃ破裂もしますわ.

IMG_20151011_130436.037

IMG_20151011_130718_193

前回の手順を逆戻りして,交換終了です.

IMG_20151011_131747.604

電源をいれて成功を確認.

IMG_20151011_132113.385

 

まとめ

交換作業を行う場合は, あらかじめネット上でブログや動画を見ておくのがいいです.

バッテリーは入手可能か.
自分で作業ができるか。
必要なツールを持っているか。

私は, 以下のサイトで確認しました. 最近のiPhone「A9」の違いの記事でも少し目にしたサイトです.

Android Phone Repair - iFixit

ツールや必要工具についていくつか調べておきました.

Nexus5
バッテリー: LG BL-T9
ボルト: 4.0mm Phillips #00 screws × 6

Nexus6
バッテリー : Chyu EZ30
ボルト: 2.3 mm T3 Torx screws × 23

その他ツール
SIM用のピン, ヘラ, ピンセット

しかし, こういう作業は失敗する可能性もあるので有効期間内であればメーカーやベンダーなどの端末保証や保険を適用するほうが安全です。