Play Services 12.0.0 で android.permission.READ_PHONE_STATE が要求されている件

Google Play Console にアップすると怒られて受け付けてくれません。

"New permissions added
WARNING
Users that have the APK with version code 19 may need to accept one or more of the android.permission.READ_PHONE_STATE and android.permission.WRITE_EXTERNAL_STORAGE permissions, which may result in them not upgrading to this version of the app."

android.permission.READ_PHONE_STATE てどんな許可内容だったか。

端末のステータスとIDの読み取り
端末の電話機能へのアクセスをアプリに許可します。これにより、電話番号、端末ID、通話中かどうか、通話相手の電話番号をアプリから特定できるようになります。

危険なパーミッションです。

「通話機能の必要ないアプリでも Play Service を利用していれば弾かれる」というような状況のようです。

android.permission.READ_PHONE_STATE added with Play Services 12.0.0 [76024034] - Visible to Public - Issue Tracker

android - Why has the READ_PHONE_STATE permission been added? - Stack Overflow

以下で回避できるようです。できました。


<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    tools:node="remove" />

なんなんでしょうね。

このような混乱はきっとこの先も増えていきそうです。

ーーー
2018-04-04: 追記
修正されているようです。
Release Notes  |  Google APIs for Android  |  Google Developers


【実録】ビットコインホルダーが利益ゼロまで養分となる年末

ふと、こういう書き込みを見つけた。

国税庁 - 仮想通貨に関する所得の計算方法等について(情報)

雑所得扱いとなる申告が怖くて面倒くさいので利確できない

BTC下がる

利益がある限り利確できない

BTC下がる

利益がなくなる

そんなビットコインに対しての日本人の状況。

ビットコイン、取引シェア日本4割 個人の投機大半  :日本経済新聞

2017-12-22 18:36 現在まさしくその流れ。

日本人はほんとに養分となってしまうのか。

がんばれ日本! 負けるな日本!


Amazon vs Google の排除合戦に Apple が参入した?

ネットの中立性があやしくなってきていますが。

米、「ネットの中立性」撤廃 コンテンツの扱い格差容認 (写真=AP) :日本経済新聞

Net Neutrality - Bloomberg

で、最近のニュース。

GoogleはEcho Show向けにAmazonが用意したYouTubeアプリがGoogleの利用規約に違反しているとして、Echo ShowでYouTubeを使えないようにしました。その直後、AmazonはGoogle系列のスマートホーム企業Nestの一部製品をAmazonで販売停止にして対抗します。

AmazonとGoogleのバトルが激化 ユーザー不在の締め出し合戦へ - ITmedia PC USER

そんなことを考えながら、

ADBをアップデートして少しビビる、今日。

ビルドツールを更新すると、OS X上でADBが動作しなくなる

Updating to build tools 27.0.2 breaks ADB on OS X : androiddev


$ cd $ANDROID_SDK_ROOT
$ rm -r platform-tools/
$ curl https://dl.google.com/android/repository/platform-tools_r26.0.2-darwin.zip -o platform-tools_r26.0.2-darwin.zip
$ unzip platform-tools_r26.0.2-darwin.zip

iPhone の Apple をGoogleの敵と単純に考えてしまってはいけませんね。

すいません。


すばやく理解する「Room x RxJava 」

いい記事があったので。

Room 🔗 RxJava – Google Developers – Medium

まずは、Room で Dao.


@Query(“SELECT * FROM Users WHERE id = :userId”)
User getUserById(String userId);

ここまでで問題なのは、

1. 同期呼び出しでブロッキング。
2. データ変更時に再度呼び出す必要がある。

ということで、RxJava を使いたくなります。

Room は RxJava2.x に対応しています。

Adding Components to your Project | Android Developers

どのように使うのか?

Maybe


@Query(“SELECT * FROM Users WHERE id = :userId”)
Maybe<User> getUserById(String userId);

1. 該当ユーザがなければ、何も返さずに complete。
2. 該当ユーザがあれば、onSuccess となり complete。
3. Maybe が complete されたあとにユーザー情報が更新されても何もしない。

Single


@Query(“SELECT * FROM Users WHERE id = :userId”)
Single<User> getUserById(String userId);

1. 該当ユーザがなければ、何も返さず onError(EmptyResultException)。
2. 該当ユーザがあれば、onSuccess。
3. Single が complete されたあとにユーザー情報が更新されても何もしない。

Flowable


@Query(“SELECT * FROM Users WHERE id = :userId”)
Flowable<User> getUserById(String userId);

1. 該当ユーザはなければ、何も返さず emit もされない。当然、onNext も onError も呼ばれない。
2. ユーザが存在すれば、onNext。
3. ユーザ情報が更新されるたびに、自動で emit されるので、UI上を最新データに更新させることが可能になる。

 

まとめ

これだけ数行でデータベース、非同期処理を簡潔明快に説明できる Room x RxJava の組み合わせ。

おまけに Observable から細分化された RxJava2.x の主役たちの使い方も理解することができます。

素晴らしいですよね。


「アプリにActivityはひとつでいい」という神のお告げ

左からの NavigationDrawer が初回に起動する Activity にある場合, 気持ち悪いと思ってましたよね.

あのAndroidの神と言われている Jake Warthon さんが言い切ってます.

アプリにActivity一つで複数のFragmentを使う。ただFragmentのバックスタックは使わない。クソなので。

UI周りでいえば Activity起動時のコストを考えてみれば理にかなってるようにも思えます.

確かに, 「Fragment のバックスタック」周りで混乱する様子はだれもが見てきました。

Reddit でも話題になっており, この意見に同意する人も多い雰囲気.

In Droidcon NYC 2017, Jake Wharton says you should use a single-activity for the whole app, and you can use fragments but don't use the fragment backstack because it's bad : androiddev

で, いまどきのストラクチャーでどのような構成にするのか.

Android: the Single Activity, Multiple Fragments pattern | One Activi…

このスライドでは, 画面の数だけ「Presenter + View(Fragment)」のペアを用意する という形の記述となっていますが, Fragmentの特性上これが自然な気がしていますが.