run_prettify.js

2019年12月7日土曜日

既存アプリのApp Bundle対応

基本

今までは以下のタスクでapkファイルが作成された。
./gradlew assembleRelease
App Bundleに対応するには、以下のタスクでaabファイルを作成する。
./gradlew bundleRelease

 fastlaneでの配信方法

apkファイルの配信設定がすでにあるなら、変更点は2つだけ。
  1. ビルドするタスクを bundleRelease にする
  2. upload_to_play_storeのパラメータを変更する
    1. apk_paths を aab_paths に変更
    2. skip_upload_apk: true を追加(設定しないとエラーになる。ドキュメント参照)

DeployGateでの配信方法

DeployGateはaabファイルに対応していないので、今まで通りapkファイルを送る必要がある。
ストア配信と同様にaabファイルを作成し、そこからbundletoolを使ってapkにするのが良さそう。
(ただ、aab→apk配信をGoogle Play側の責務と考えて、その部分はベータ版で確認する、という考え方もあり。bundletoolで作成するapkはuniversal版なので、ストアからDLできるものが同じになるわけではないため。
その場合、DeployGateは今まで通りassembleで良い)

参考

自分のアプリで対応した時の差分
https://github.com/75py/Bashful-Clock/compare/v1.0.1...v1.0.2

2019年11月24日日曜日

Google Play Developer APIをV1・V2からV3に移行する

Google Playのコンソールで表示される以下の警告に対応するには。
アプリで古いバージョンの Google Play Developer API を使用していることを検出しました。2019 年 12 月 1 日以降、この API のバージョン 1 と 2 はご利用いただけなくなります。この日より前にバージョン 3 に更新してください。 詳細
リリースに使っていたfastlaneのバージョンが古かった。2.135.0で対応したとのことなので、更新するだけでOK。
https://github.com/fastlane/fastlane/issues/14573

fastlane/Fastlaneをfastlane_version "2.135.0"って書き換えるだけ。
試した範囲では2系に破壊的な変更はなかったのでそのままいけるはず。(セマンティックバージョニングに準拠してれば当たり前か)

2019年2月17日日曜日

2018年1月14日日曜日

画面の明るさを一時的に上書きするアプリ「Temporary Brightness」を公開しました

画面の明るさを一時的に上書きするアプリ「Temporary Brightness」を公開しました。
Playストアからダウンロードできます。

https://play.google.com/store/apps/details?id=com.nagopy.android.temporarybrightness

どんなアプリ?


クイック設定パネル(ステータスバーを下ろして、さらにもう一度下方向にスワイプした時に出てくるアイコン群のこと)から起動して、画面の明るさを上書きするアプリです。
もう一度クイック設定パネルのアイコンをタップするか、 画面を消灯すると明るさは元に戻ります。

何が便利なの?


最近のOSなら、通知領域に明るさを調整するバーが表示されているので、一見すると存在意義がわからないと思います。
ユースケースとしては「普段から画面を暗めにしている + 目があまり良くない人にスマホの画面を見せるとき」を想定しています。
通知領域のバーで明るさを変更してしまうと、当然後で元に戻す必要があります。これは意外と面倒です。
このアプリを使えば、OSの設定を変更することなく、一時的に画面を明るくすることができます。

「そんなニッチなアプリいらねーよ」という方は、どうぞ回れ右でw
ツールアプリなんてそんなものです。

対象OS


Android 7.0以上です。
これは、クイック設定パネルのアイコン追加機能がここから使えるようになるためです。

動作端末


基本的にどの端末でも動作するはずですが、Xperiaは独自仕様のため挙動が怪しくなることを確認しています。
(クイック設定パネルから上書きを解除した後、自動調整機能で輝度がジリジリ変わります。どうも、通知領域に表示される明るさ調整バーは、実際の輝度と連動するのかな? 謎仕様です)


ソースコード


GitHubで公開しています。
https://github.com/75py/Android-TemporaryBrightness

2018年1月8日月曜日

7つのアプリを公開or更新しました(Aplin、ファイルショートカット 他)

年末年始にかけて、公開中のアプリを全体的に更新しました。

Aplin


アプリを分類・一覧表示するアプリです。
「無効化マネージャー」の後継アプリとして使えます。
昨年末の更新で、分割画面モード中に設定画面を別ウィンドウで開くようにしました。

Androidのバージョンが上がるごとに標準の設定画面が便利になってきて、必要性を感じなくなりつつあるものの、細々続けていくつもりではあります。


ファイルショートカット[V2]


ファイルのショートカットを作成するアプリです。
ベータ版を公開したまま放置していましたが、ようやく正式版としてリリースしました。
旧アプリとの互換性はありません。
Android 6.0の "Runtime Permissions" やAndroid 7.1の "App Shortcuts" にも対応しています。
(App Shortcutsを使ったショートカットの編集機能は、使っているAPIの関係で8.0以上をターゲットにしています)


文字数カウント[V2]


文字数を数えるアプリです。
旧アプリをブラッシュアップしました。
ベータ版を公開したまま放置していましたが、ようやく正式版としてリリースしました。


発信確認


電話発信前に確認ダイアログを出すアプリです。
ベータ版を公開したまま放置していましたが、ようやく正式版としてリリースしました。
類似アプリはいくらでもありますが、作った理由は「連絡先へのアクセスを許可するほど信用できるアプリが選べなかったから」です。
その点、ソースコードが公開されていれば安心です。
(実はこれ、私以外には「ストアにあるアプリが、公開されているソースコードでビルドされているとは限らない」という罠がありますが、そこは信用してもらうか、不安なら自分でビルドすれば解決です)


Overlay Battery Bar


ステータスバーにバッテリー残量の棒を表示する新規アプリです。
これも類似アプリがいくらでもありますが、
  • 最近のAndroidはアプリごとにステータスバーの色が変わるので、バーをカラフルにするとかえって見づらい
  • バッテリセーバーを有効にすると、ステータスバーの上にビューを表示できない
    (たぶん8.0から。8.0以降でバッテリセーバーを有効にすると、ステータスバーの下に棒が移動します)
という理由で作ってます。
申し訳程度に設定画面がありますが、私はデフォルト設定で十分だと思ってます。


Download Confirm


Chromeでファイルへのリンクをタップしたときに、いきなりダウンロードが始まるのを防止するアプリです。
久々の更新で、*.gzに対応して、不具合も少し直しました。
なお、最近のChromeはPDFのダウンロードについては防止できず、いきなり「Googleドライブ」のアプリが提供しているPDFビューアが起動します。
これは仕様なのでどうしようもないです。
また、Chrome以外のブラウザではたぶん動きません。


お使いのシステムは最新の状態です


システムアップデート画面を開くだけのアプリです。
3年ぶりくらいの更新です。前バージョンは設定画面っぽいものが用意されていましたが、いらないかなーということで
直接システムアップデート画面に飛ぶようにしました。

2017年3月20日月曜日

プライバシーポリシー

ブログ・Androidアプリ等で扱う情報をより明確にするため、2022/4/1よりプライバシーポリシーを改定します。改定後のポリシーは以下を参照してください。
https://www.nagopy.com/privacy-policy



取得する情報と利用目的
  • アプリの機能に必要な場合、個人情報にあたるデータを取得する場合があります。
    取得した個人情報は、アプリの機能を実現するためにのみ使用します。インターネットを通じた収集等は行いません。
  • 一部アプリでは、Firebase・Google Analyticsを用いて、匿名によるクラッシュログ等の収集を行っています。
    このデータは外部(Firebase等)に送信されますが、個人を特定する情報ではありません。
  • 一部アプリでは、AdMobを使用して広告を表示します。
    その際、ユーザーの興味・関心に合わせた広告を表示するため、位置情報等を収集する場合があります。
    この情報から個人が特定されることはありません。
    取得する情報、利用目的、第三者への提供等の詳細は、以下のページを参照してください。
その他

  • 問い合わせで取得したメールアドレス等の情報は、問い合わせへの回答以外では使用しません。

2016年9月25日日曜日

ストレートネックブロッカーを公開しました

ストレートネックブロッカーをリリースしました。
公開ベータ版としてストアに置いてあります。

https://play.google.com/store/apps/details?id=com.nagopy.android.straightneckblocker

スマホの角度を監視し、一定時間傾きが30度を超えると警告を表示します。

先日、整形外科で「見事なストレートネックですね」と言われたのがショックでした。
このアプリのテスト中、自分がいかに首を曲げてスマホを弄っていたかを実感しました。
そりゃまっすぐにもなるわ。

まだまだ出来が悪いですが、手元で温めていてもしょうがないのでとりあえず放出した次第です。
バグ報告・要望のほか、アイコン作ってれる方もお待ちしています。
アイコンがアプリ内容と一致するようになったらベータ脱出かな。
→ 【2016/9/27追記】@orefolderさんが作ってくれました。ありがとうございました!
間隔短すぎたのでもうしばらくベータで。。。w

ソースコードはこちら。
https://github.com/75py/StraightNeckBlocker

文字数カウント[V2]を公開しました

文字数カウントの新バージョンをリリースしました。
公開ベータ版としてストアに置いてあります。

英文用
https://play.google.com/store/apps/details?id=com.nagopy.android.textcounter

日本語用
https://play.google.com/store/apps/details?id=com.nagopy.android.textcounter.ja

機能的には、旧アプリの縮小版です。設定項目をできるだけ減らし、そのまま使えることを意識して作りました。
私としては、これくらいで十分だと思っています。
要望があれば連絡いただければ、追加の要否を検討します。

ソースコードはこちら。
https://github.com/75py/TextCounter

ファイルショートカット[V2]を公開しました

ファイルショートカットの新バージョンをリリースしました。
公開ベータ版としてストアに置いてあります。

https://play.google.com/store/apps/details?id=com.nagopy.android.fileshortcut

旧アプリとの互換性はありません。
新アプリとして公開した理由はいろいろありますが、互換性を保てなさそうというのが一番です。

機能的には、旧アプリと大きく変わりません。ランタイムパーミッションに対応しました。
あ、強いて言えば、ショートカットアイコンに矢印が付くようになりました(どうでもいい)。

ソースコードはこちら。
https://github.com/75py/File-Shortcut

2016年2月14日日曜日

アプリ【Aplin】を公開しました

Androidアプリ Aplin をリリースしました。
Aplin - Google Play の Android アプリ

どんなアプリ?

無効化マネージャーマイパッケージの後継アプリです。 無効化に拘らず、様々な条件でアプリを分類します。
  1. 無効化ボタンを押せるアプリを表示します。
    • メーカー・キャリアのカスタマイズが行われている場合、正確に判定できない場合があります。
    • Aplinは、 標準の設定画面から一つ一つ無効化ボタンが押せるかを確認するという、数百個のアプリが初期状態でインストールされている国産端末で行うにはあまりにシンドイ作業を簡略化する機能 を提供します。
      • 無効化は、Android OSの標準機能です。
      • 無効化ボタンが押せる = 無効化しても大丈夫 ではありません
      • 無効化などを行う際は、表示される注意事項をよく読み、自己責任で行ってください。
  2. デフォルト起動が設定されているアプリを表示します。
    「この操作で常に使用する」を解除したい時にどうぞ。
  3. インターネット権限を要求しているアプリを表示します。
  4. 【6.0以上】拒否可能なパーミッションを要求するアプリを表示します。
    • カメラ、位置情報など、設定画面から許可・不許可を選択できます。
    • Runtime Permission(6.0以降の新しいパーミッションモデル)に対応していないアプリの場合、正常に動作しなくなる可能性がありますので、自己責任でご利用ください。
  5. 【6.0以上】他のアプリに重ねて表示するアプリを表示します。
    • 設定>アプリ>歯車のアイコン>他のアプリの上に重ねて表示 のショートカットを提供します。
    • (どうしてこんなに深い、誰も気づかないようなところにあるんでしょうか)
その他、設定画面から以下の項目の表示・非表示を設定できます。
  • 初回インストール日時
  • 最終更新日時
  • バージョン名
  • インターネット権限が要求されているか
  • 拒否可能な権限
あとは、表示中アプリの共有、長押しからの検索など、前身アプリからの機能を引き継いでいます。

4.3以下の端末をご利用の方

引き続き、無効化マネージャー・マイパッケージを使用してください。

4.4以降の端末をご利用の方

新規の方は、Aplinをご利用ください。 無効化マネージャー・マイパッケージをご利用の場合、乗り換える必要はありませんが、今後はAplin以外のメンテナンスは行いません。

注意

もはやテンプレ。
アプリ上で表示する無効化・パーミッション拒否等の分類は「その操作を行えるアプリを分類しているだけ」です。 無効化可能=無効化しても大丈夫、というわけではありません。
無効化などを行う際は、表示される注意事項をよく読み、自己責任で行ってください。

ご意見、ご要望など

メール、ツイッター、Google+へどうぞ。
コード書ける人なら直接GitHubへ(大歓迎)。

ソースコード

2015年4月12日日曜日

アプリ【マイパッケージ】を公開しました

【2016/2/14追記】
マイパッケージ はベータ版のままメンテナンスを終了します。
無効化マネージャーの後継アプリとして、Aplinを公開しました。
詳細は以下のページをご確認ください。
アプリ【Aplin】を公開しました



マイパッケージ 0.1.1をGoogle Playで公開しました。
インストールされているアプリを一覧表示するアプリです。

https://play.google.com/store/apps/details?id=com.nagopy.android.mypkgs

主な機能

  • インストールされたアプリをカテゴリ分け
  • アプリを共有

要求パーミッション

INTERNET
ACCESS_NETWORK_STATE
広告表示のために使用します。
上記以外の目的でパーミッションを使用しません。

Advanced features

有効にすると、表示カテゴリやソート順などを変更できます。
表示カテゴリ「無効化可能」のカテゴリは、実質「無効化マネージャー」と同等の機能を有します。

※ 無効化マネージャーは、Google Playのコンテンツポリシーに下記の記述があったため、公開を取りやめたアプリです。
https://play.google.com/intl/ALL_jp/about/developer-content-policy.html
アプリは、アプリによって提供されるセキュリティ サービスの一部である場合を除き、サードパーティのアプリを削除または無効にするようユーザーを助長、誘導したり、欺いたりしてはなりません。
マイパッケージでは、無効化可能タブはデフォルトでは表示されません。 また、Androidの仕様上無効化ボタンを押すことができるアプリを一覧表示するだけで、それ以上(無効化を行うか否か)の判断はユーザー自身によるものであり、何らコンテンツポリシーに違反するものではないと考えています。
(そもそも無効化マネージャーも、違反するかは疑問ですが)

こんな感じで使います

  • アプリのパッケージ名を調べる
    リストの右下に出る「com.android.bluetooth」とかがパッケージ名です。
    pm list packagesの代わりに使えます。参考:Using package manager (pm)
  • 無効化マネージャーの代わりに使う
  • 「全て」に表示されるアプリの多さに絶望する(国内端末限定)

2015年1月7日水曜日

無効化マネージャー(バージョン2)をF-Droidで公開しました

【2016/2/14追記】
無効化マネージャーの後継アプリとして、Aplinを公開しました。
詳細は以下のページをご確認ください。
アプリ【Aplin】を公開しました



無効化マネージャーのリニューアルバージョンを公開しました。
F-Droidというマーケットからダウンロードできます。

https://f-droid.org/repository/browse/?fdid=com.nagopy.android.disablemanager2

旧バージョン(Playストアの最終版)からの変更点
※ 一から作り直しました(パッケージ名、署名ともに変更され、全く別アプリとして動作します)。
  • 横スワイプでカテゴリを切り替えられるようになりました。
  • 長押し複数選択による部分共有が可能になりました。
  • Android 5.0のカテゴリ分け精度が向上しました。
  • 余分な機能を削除しました(除外リスト、インポート、その他細かい設定)。
なお、致命的な不具合修正は含まれませんので、旧バージョンをインストール済みの方が急いでアップデートする必要はありません。

以下の原則は、旧バージョンと同様です。
  • 無効化可能=無効化して良いではない 
  • カテゴリ分けは正確でない場合がある
  • 自己責任で使用してください


2.0.3 (2015/01/12)
  • 安定板としてリリース
2.0.4 (2015/02/22)
  • 「無効化可能(実行中)」タブを追加
  • 上記修正に伴い、レイアウトを調整

2014年1月4日土曜日

XUtilities

XUtilitiesは、小規模なカスタマイズ機能を寄せ集めたXposedモジュールです。 KitKatのストックROMが対象ですが、他の環境でもある程度動作します。

ダウンロード:XUtilities

便利機能満載モジュールといえばGravityBoxですが、どうも自分の好みに合わないため一から作りました。被っている機能もありますが、このモジュール+Notification Toggleのほうが、より私好みです。

更新履歴

1.5.3 beta

  • 不具合修正
  • ログ整理
  • 緊急通報ボタンの誤操作防止機能を追加(二回タップでダイヤルが開くように)

主な機能

省略。ちゃんと日本語なので見ればわかります。

動作環境

Nexus 5、4.4.2、ストックROMで確認。他の環境でもある程度は動くはず。 4.4未満でも動くけど機能は制限されます。

要求パーミッション

CAMERA
FLASHdtGHT
ライト点灯に使用します。
WRITE_EXTERNAL_STORAGE
READ_EXTERNAL_STORAGE
フォントファイルの読み込みに使用します。
SYSTEM_ALERT_WINDOW
トーストを前面表示するために使用します。

ソースコード

https://github.com/75py/XUtilities

ライセンス

Apache License 2.0

2013年9月23日月曜日

無効化マネージャー Playストアでの公開停止のお知らせ

無効化マネージャーのPlayストアでの公開を停止します。

理由

2013年8月23日に更新された、Google Play デベロッパー プログラム ポリシー(「コンテンツ ポリシー」)に抵触する恐れがあるため。

該当箇所

Google Play Developer Program Policies、Content Policies、System Interferenceの項。以下に引用します。
Apps must not encourage, incentivize, or mislead users into removing or disabling third-party apps except as part of a security service provided by the app.
日本語でおkな人向けにはこんな感じ。
アプリは、アプリによって提供されるセキュリティ サービスの一部である場合を除き、サードパーティのアプリを削除または無効にするようユーザーを助長、誘導したり、欺いたりしてはなりません。

本当に抵触してるの?

知りません。その恐れがあると私が判断したので公開を停止しました。

ダウンロードしたい方へ

野良アプリとしてAPKファイルを公開しますので、ご自由にダウンロード・インストールしてください。
インストール方法については各自でお調べください。
DisableManager_v1.3.3.apk

新しいバージョンを公開しました。
無効化マネージャー(バージョン2)をF-Droidで公開しました

2013年9月8日日曜日

XVeilView for Aquos Phone

シャープ端末向け、ベールビューを制御するショートカットを作成するXposedモジュールです。要root。

インストール後、当モジュールを有効にして再起動すると、ショートカットが機能するようになります。

ダウンロード

Xposed Installerのダウンロード機能から。直リンク

動作確認

  • SH-02E(docomo, 4.1.2)

他の端末で動作するかは確認していません。たぶん4.0.3以上のシャープ機なら動く、かも。

注意

Do it at your own risk.

ソースコード

https://github.com/75py/XVeilView

2013年4月7日日曜日

無効化マネージャーのアイコンについて

無効化マネージャーは、ココナラというサービスであおきゅーさんにお願いして作ってもらいました。私としてはかなり気に入っています。アイコンがいい加減なものだったらここまでDL数は伸びなかったでしょう。

私のように絵心のないアプリ開発者には嬉しいサービスです。ふわふわした要望もうまーく形にしてもらえます。興味のある方はぜひ問い合わせてみてください。

なお、あおきゅーさんによりますと、ココナラでのサービスはお試し版のような位置づけだそうです。まずはココナラを利用してみると良いかと思います。

ライセンスについて

無効化マネージャーは勉強も兼ねてソースコードを公開しています。アイコンもそこにアップロードしていますが、お金を出して作ってもらったものです。アプリレビュー等で使う場合はもちろん構いませんが、他のアプリのアイコンとして使うなどの無断転載はしないでください。

2013年3月14日木曜日

無効化マネージャー ヘルプ(インポートとエクスポート)

v1.2.0で追加したインポート・エクスポート機能に関するヘルプ記事です。

「同じ端末買ったんだけど、どれを無効化すればいいの」という友人の言葉から作られた機能だったりします。

機能概要

除外リストのインポート・エクスポート

  1. 「無効化不可能なのに無効化可能リストに表示されるアプリ」を見つけたら、長押しで除外リストに登録する。
  2. 無効化すると不具合が生じるものを、その旨コメントを付けた上で除外リストに登録する。
  3. 一通り作業を済ませたら、除外リストをエクスポートする。
  4. 作成されたXMLファイルをどこかにアップロードし公開する。
  5. 同じ端末を使う人がそのファイルをダウンロードしてインポートすると、最初の人の成果をそのまま読み込んで除外リストに登録できる。

無効化推奨リストのインポート・エクスポート

  1. 無効化作業を終えた人が、自分の無効化済みアプリ一覧を「無効化推奨リスト」としてエクスポートする。
  2. 作成されたXMLファイルをどこかにアップロードし公開する。
  3. 同じ端末を使う人がそのファイルをダウンロードしてインポートすると、リストにあるアプリを「まだ無効化していないアプリ」「既に無効化されているアプリ」「自分が既に除外リストに登録しているアプリ」に分けて表示することができる。

このように、既に無効化を一通り済ませた人がファイルをエクスポートしそれを公開することによって、同じ端末の所有者が効率よく作業を済ませることができます。

「初期化したいんだけど無効化し直すのが面倒……」という場合にも、初期化前にエクスポートしてPCやmicroSDに避難させておけば、初期化後の作業をあっという間に済ませることが可能です。この場合はバックアップというニュアンスになりますね。まぁやることは同じです。

注意

上記の流れを完成させるためには、自力で行った作業を無償で提供してくれる協力者が必要になります。情報を提供してくれる人はあくまでボランティアですので、その点に十分留意してください。提供者がいればラッキー、くらいに思ってください。

また、無効化作業が自己責任であることはアプリの説明文で述べていますが、インポート機能を使った場合も同様です。

エクスポートされる情報

  • 端末の名前
  • ビルド番号
  • エクスポートした種類(除外リスト、無効化済みリスト)
  • パッケージ名
  • 各アプリのコメント

当然ながら個人情報は含まれませんのでご安心ください(どうしても気になるようなら、テキストエディタ等でXMLファイルを開いてみてください。ただのテキストなので簡単に読めます)。

端末名を保存しているのは、別の端末のファイルを誤ってインポートしてしまうことを防ぐためです。確認ダイアログが表示されますが、OKを押すことでそのまま読み込んでしまうことも可能です。同メーカー・同キャリアの端末のものならある程度共通部分がある可能性はあります。

ビルド番号は、まあ一応バージョンアップで変わることもあるかな、という配慮です。同じくダイアログでOKを押せば無視できます。

種類ってのは、無効化推奨リストなのか除外リストなのか、ってやつです。無効化推奨リストを誤って除外リストとして読み込むと面倒なことになるので、それを防ぐためです。

読み込んだ後は、読み込んだパッケージのうちインストールされているものだけを抜粋し、「無効化可能」「無効化済み」「除外アプリ」の三つのタブを表示します。

コメントのインポートについて

アプリ一覧と同様に、エクスポート対象のアプリにコメントがついていればそれもエクスポートします。

インポート後の画面では、XMLファイルに含まれているコメントのみが表示されます。なお、インポート後の画面でもコメントを編集できますが、これは特に保存されるわけではなく、画面から離れると全て削除されます。無駄なことをしてしまわないようご注意ください。

除外リストのインポートについて

無効化推奨リストはその場で使ってすぐ破棄する情報なので特に問題はありませんが、除外リストは読み込むと保存されます。これが馬鹿みたいにたくさんになってくると処理が重くなってくる可能性がありますので、あまりたくさん読み込みすぎないようにしてください。

アップローダー

手軽にアップロードできるように、用意しました。ご自由にどうぞ。

エクスポートしたXMLファイルまたはそれをまとめたzipファイルをアップロードしてください。

無効化マネージャー XMLアップローダー

エクスポートしたファイルのサンプル(for SH-02E)

僕が所有している分です。サンプルも兼ねて公開します。

2013年2月25日月曜日

SharedPreferencesのgetStringSetを使う場合の注意

SharedPreferencesはAPI11からSetを保存できるようになりましたが、こういうことをすると、一見上手くいっているようで上手く保存できなくなります。

/**
 * @return 保存したコレクション
 */
public Set getStringSet(){
 return sp.getStringSet(KEY, new HashSet());
}

/**
 * @param str 追加または削除する文字列
 * @return 保存に成功すればtrueを返す
 */
public boolean updateStringSet(String str){
 Set set = getStringSet();
 if(set.contains(str)){
  set.remove(str);
 } else {
  set.add(str);
 }

 return sp.edit().putStringSet(KEY, set).commit();
}

一見うまく動くんですが、プロセスが殺された後再度起動すると、前の値が保存されていません。しょぼーん。

色々試してみましたが、getStringSetのところでディープコピーすると正常に動作しました。

/**
 * @return 保存したコレクション
 */
public Set getStringSet(){
 Set saved =  sp.getStringSet(KEY, new HashSet());
 HashSet returnSet = new HashSet(saved.size());
 for (String str : saved) {
  returnSet.add(str);
 }
 return returnSet;
}

あんまりスマートではないけど、まあ解決したのでおっけー。

2013年2月24日日曜日

無効化マネージャー

無効化マネージャーをGoogle Playで公開しました。プリインストールアプリの無効化を補助するアプリです。

ダウンロードはGoogle Playからどうぞ→無効化マネージャー

機能

  • 無効化が可能で、まだ無効化されていないアプリの一覧を表示する
  • 無効化されたアプリの一覧を表示する
  • 無効化が不可能なシステムアプリの一覧を表示する
  • ユーザーがインストールした一般アプリの一覧を表示する
  • 表示中のアプリ一覧をメーラーなどに共有する
  • 一覧画面でアプリをタップすると設定画面に飛ぶ
  • 各アプリにコメントをつける
  • 実行中のプロセスのみ表示する
  • 変更日で表示・ソートする
  • 除外リストのインポート・エクスポート
  • 無効化済みリストを無効化推奨リストとしてエクスポート、そのファイルを別端末でインポートし無効化済み・無効化可能に分類して表示
変更日で表示・ソートする

v1.1.0で追加した機能です。無効化可能アプリ・無効化済みアプリについて、有効・無効を切り替えた日時を保存し、最近変更したものから順に表示できます。(設定>一般から変更可能)

既に「これとこれを無効化するといいよ!」っていう情報が出そろっている端末利用者にはあまり必要ないと機能だと思います。情報のないフロンティアが広がる端末を購入した際に、これを使ってちょっとずつ無効化を試していくと便利かなと思います。何か不具合が出たら、最近無効化したものから順に戻していけばおっけー、となります。

注意点があります。この機能は、v1.1.0以降の無効化マネージャーから「無効にする」ボタンを押しに行った場合のみ有効です。OSの標準機能ではないため、無効化マネージャー以外で行われた操作については検知できません。

実行中プロセスのみ表示について

実行中のプロセスを含んでいるアプリのみ表示するようになります。この機能を使うと、無効化を効率よく行えます。

ただし、無効化済みアプリについてはチェックの有無に関わらず全て表示されます(v1.2.3以降)。これは、チェックを入れたまま無効化作業を続けた後、有効に戻す際に迷子にならないようにするためです。

インポート・エクスポート機能

別記事にありますのでそちらをご覧ください。無効化マネージャー ヘルプ(インポートとエクスポート)

使い方など

起動すると、アプリ一覧を作成します(環境によってかかる時間に差があります)。最初は「無効化可能アプリ」の一覧が表示されます。

アプリをタップすると設定画面に飛びます。無効化したいアプリを選んで、「無効にする」を選択してください。

無効化済み、無効化不可、通常アプリの一覧も表示できます。

表示中リストの中身をメーラーなどに共有する機能があります。一通り無効化作業を済ませたら、無効化済み一覧を共有すると同じ端末を使っている人が喜ぶかもしれません。

共有のフォーマットは、「アプリ名」「パッケージ名」「両方」に加え、カスタムフォーマットが使用可能です。設定画面からフォーマットを変更できます。

アプリを長押しするとコメントを追加することができます。カスタムフォーマットを使えばコメントも共有できるので、無効化の弊害など特筆事項を記入して共有すると良いかもしれません。

無効化可能アプリの判定には、公開されているAndroidのソースコードの一部を使用しています。しかし実際に売られている端末は、キャリアやメーカーによって独自実装が施されている場合があり、確実に全ての端末で判定できるということは保証できません。既にSH-02Eにおいて、一部のドコモアプリが、無効化できないにも関わらず無効化可能アプリとして表示されてしまうのを確認しています。そういったアプリを見つけた場合は、手動で除外アプリに登録してください(長押し→「除外アプリに登録」)。

メニューから、「実行中のプロセスのみ表示」の設定を切り替えられます。このモードで表示される無効化可能アプリを無効化するのが一番効果的です。

v1.3.0で、長押しメニューからGoogle先生に飛ぶ機能を追加しました。そのアプリのアプリ名やパッケージ名の検索画面を開きます。私が個別アプリについての質問にお答えすることはできませんが、Google先生なら何かわかるかもしれません。

諸注意など

このアプリは、OS4.0.3以上対象、非rootユーザー向けです。アプリの無効化はAndroid(ICS以上)のOS標準機能です。

アプリの無効化は自己責任で行ってください。無効化可能アプリの中にも、無効化すべきでないアプリは存在します。

要求パーミッション

  • SDカードの読み込み・書き込み

除外リスト、無効化推奨リストのインポート・エクスポートに使用します。(v1.2.0以降)

動作環境

OS4.0.3以上で動作可能です。4.0.3、4.1.2、4.2のエミュレーターで動作確認をしています。

翻訳

Crowdin.netはオープンソースの場合無料で使えるとのことだったので、試してみました。

Source languageは一応Englishですが如何せんpoorなので、英訳の直しも大歓迎です。

Disable Manager Translations - Crowdin

ソースコード

以下のURLで公開中です。勉強も兼ねて作っています。ライセンスについてはREADMEをご覧ください。

https://github.com/75py/DisableManager

アイコンについて

ココナラというサービスであおきゅーさんに作っていただきました。絵心のないアプリ開発者には嬉しいサービスです。詳しくは別記事をどうぞ。無効化マネージャーのアイコンについて

今後の更新予定

  • 無効化済み一覧のインポート・エクスポート機能v1.2.0で実装
  • 一覧画面を、横スワイプで隣のタブに移動できるようにする

更新履歴

  • v1.3.1(2013/05/19)
    • XMLインポートのファイル選択の際、特定条件下で強制終了するバグを修正
  • v1.3.0(2013/04/29)
    • 長押しメニューに「検索」を追加
  • v1.2.3 2013/04/07
    • 「実行中プロセスのみ表示」のチェックの有無に関わらず、無効化済みアプリが表示されるように変更
    • 更新後、変更内容を表示するように
  • v1.2.2 2013/03/31
    • スクロールの際つまみが表示されるように変更
    • 実行中プロセスの表示形式を変更
    • 変更日によるソートの修正
    • 初回起動ダイアログでバックキーを無効に
    • アプリのテーマをDeviceDefaultからHoloに変更(一部端末での配色の乱れを修正)
    • メモリ不足による強制終了を抑制
    • その他強制終了するバグの修正
  • v1.2.1 2013/03/19
    • ファイル選択ファイアログで長いファイル名は複数行になるように修正
    • About画面にCrowdinへのリンクを追加
  • v1.2.0 2013/03/14
    • 初回起動時に確認ダイアログが出るように変更(一度OKを押せば二度と出ません)
    • 除外アプリのインポート・エクスポート機能を追加
    • 無効化済みアプリを無効化推奨リストとしてエクスポートできるように
    • 無効化推奨リストをインポートできるように
    • インポート・エクスポート機能追加のため、新たに以下のパーミッションを追加しました。
      • SDカードの中身の読み込み
      • SDカードへの書き込み
      (読み込みは将来的に追加されるパーミッションのため、現在は表示されないと思います)
  • v1.1.0 (2013/03/06)
    • 無効化可能アプリの有効
    • 無効を切り替えた際に日時を保存
    • 保存した日時を表示する
    • 最近のものから順に表示する
    • 表示とソートを有効にするかを切り替える設定項目を追加
  • v1.0.1(2013/02/25)
    • 除外アプリ一覧が正常に保存されないバグの修正
  • v1.0.0(2013/02/24)
    • Google Playで公開開始

2013年1月25日金曜日

無効化したアプリの一覧を作成するアプリ(野良)

以下は古い内容です。最新版はhttps://github.com/75py/DisabledAppsListからどうぞ。


ICSでは標準でプリインストールされたアプリの一部を無効化することができます。このアプリを使うと、無効化したアプリの一覧を作成することができます。

友人の「おめーと同じ機種買ったんだけど、何無効化すればいい?」という言葉からできたアプリです。

バグがなければ手が空いたときにplayに上げる予定。

ダウンロード

http://ux.getuploader.com/75py/download/4/List_Of_Disabled_Apps.apk

要求パーミッション

特になし。

使い方

起動後の数秒はアプリ一覧の取得をするのでお待ちください。読み込みが終わると、無効化済みアプリの一覧画面になります。

アプリをタップすると、OSの設定画面に飛びます。有効に戻すときに便利かなあと。

メニューから共有で、アプリ名・パッケージ名をメーラーなどに共有できます。

おまけ機能で、「無効化されていないシステムアプリ」「ユーザーがインストールしたアプリ」も一覧表示できるようになっています。「有効なアプリ(システム)」で無効化されていないシステムアプリを表示して、「さーて次はどいつを無効化してやろうか(にやにや)」って使えます。