モバイルデータのON・OFFを切り替える機能について
よく、Cronoidのユーザーのかたから、以下の様な問い合わせを受けます。
「設定変更のアクションで、モバイルデータのON、OFFを変更する事はできないか?」
というものです。
古くからのユーザーのかたは、ご存知かもしれませんが、Cronoidでは、以前はこの機能を提供していました。
というか、厳密には現在でも同機能を提供しているのですが、Android のバージョンによって、使用可否が異なります。
Cronoidの仕様 Cronoidとしては、Androidのバージョンが、5.0(Lollipop)以上の場合、モバイルデータのON・OFFの変更は、アクション入力時に選択項目として表示しないようにしています。
そのため、バージョンが、4系のものであれば、同機能を使用することができます。(画面上に選択項目として表示されます)
なぜバージョン5.0以上では使用できないのか? Android OSの仕様変更により、モバイルデータの設定を変更するためのAPIは、システム権限を持ったアプリでないと、使用できなくなってしまったためです。
つまり「設定」のような、システム権限を持ったアプリは、同設定を変更できますが、Cronoidのような、サードパーティのアプリは、システム権限を持つことができないため、モバイルデータの設定を変更するためのAPIを使用することができないのです。
この仕様変更は、恐らく、セキュリティ上の懸念からそうしたものと思われます。
Cronoidとしては、使用不可能な機能を画面上に表示しても意味がないため、Androidのバージョンによって、モバイルデータのON・OFFを選択項目から、非表示にしているというわけです。
元々、非公開のAPIを使用していた モバイルデータのON・OFFの設定変更を行うためのAPIは、Androidとしては、元々公開されているものではなく、privateメソッドとして実装されていました。
privateメソッドに対して、外部から通常通りのアクセスをすることはできないため、リフレクションを使用して、同メソッドにアクセスしていました。(モバイルデータのON・OFFを変更する機能を持つアプリは皆同様の方法で実現していたと思われます)
ConnectivityManager cm = (ConnectivityManager) co…
「設定変更のアクションで、モバイルデータのON、OFFを変更する事はできないか?」
というものです。
古くからのユーザーのかたは、ご存知かもしれませんが、Cronoidでは、以前はこの機能を提供していました。
というか、厳密には現在でも同機能を提供しているのですが、Android のバージョンによって、使用可否が異なります。
Cronoidの仕様 Cronoidとしては、Androidのバージョンが、5.0(Lollipop)以上の場合、モバイルデータのON・OFFの変更は、アクション入力時に選択項目として表示しないようにしています。
そのため、バージョンが、4系のものであれば、同機能を使用することができます。(画面上に選択項目として表示されます)
なぜバージョン5.0以上では使用できないのか? Android OSの仕様変更により、モバイルデータの設定を変更するためのAPIは、システム権限を持ったアプリでないと、使用できなくなってしまったためです。
つまり「設定」のような、システム権限を持ったアプリは、同設定を変更できますが、Cronoidのような、サードパーティのアプリは、システム権限を持つことができないため、モバイルデータの設定を変更するためのAPIを使用することができないのです。
この仕様変更は、恐らく、セキュリティ上の懸念からそうしたものと思われます。
Cronoidとしては、使用不可能な機能を画面上に表示しても意味がないため、Androidのバージョンによって、モバイルデータのON・OFFを選択項目から、非表示にしているというわけです。
元々、非公開のAPIを使用していた モバイルデータのON・OFFの設定変更を行うためのAPIは、Androidとしては、元々公開されているものではなく、privateメソッドとして実装されていました。
privateメソッドに対して、外部から通常通りのアクセスをすることはできないため、リフレクションを使用して、同メソッドにアクセスしていました。(モバイルデータのON・OFFを変更する機能を持つアプリは皆同様の方法で実現していたと思われます)
ConnectivityManager cm = (ConnectivityManager) co…