2018-02-16 到達点メモ
*Kotlinで開発しています
以下の二つのサイトを参考にして、インストールされているアプリ一覧を表示するようにする
参考サイト:端末にインストールされているアプリを一覧で取得してみる
参考サイト:ListViewに画像サムネイル付きテキストを表示してみる
原因がいまいちわかり切っていないのだが、
別ファイルでコンストラクタ付きのクラスをインポートできない時があった。
今回は一先ず、MainActivityのクラス内に書いて解決した
参考サイト:Kotlinでコンストラクタを書く
参考サイト:Kotlinでunresolved referenceが出ます。
あと、作成中に酷いレイアウト崩れが起きた。
原因は以下のように、理由は二つあり、一つは
ImageViewとTextViewの両方の大きさの設定がwrap_contentだったこと。
二つ目はImageViewとTextViewの両方にandroid:layout_weightを設定したからである
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/app_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@android:drawable/btn_star_big_on"
android:layout_weight="1"
tools:padding="2dp" />
<TextView
android:id="@+id/app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="テスト" />
</LinearLayout>
今回に限って言えば、アイコンの大きさはある程度固定でよいので、
ImageViewの大きさを固定にし、android:layout_weight="1"を削除した。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/app_icon"
android:layout_width="64dp"
android:layout_height="64dp"
app:srcCompat="@android:drawable/btn_star_big_on"
tools:padding="2dp" />
<TextView
android:id="@+id/app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="テスト" />
</LinearLayout>
また、表示するアプリに関してもそのままやるとラベル名がcom.×××.◎◎◎という風になっているのでそれをうまい感じに排除したい。
そこで考えたのが、基本的に使うアプリはプレインストールされていてもアップデートされるので、プレインストールされているアプリの中でもアップデートされるアプリは排除の対象外にすれば行けるのではないかと思って以下のようにやりました
*ApplicationInfoの中にFLAG_UPDATED_SYSTEM_APPというプレインストールされているアプリでアップデートされたアプリというフラグがある
if ((appInfo.flags and ApplicationInfo.FLAG_SYSTEM) == ApplicationInfo.FLAG_SYSTEM){
if ((appInfo.flags and ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) continue
}
そうすると以下のような感じになりました。
今日の目標は無事達成できたので、今日はここまで。
0 コメント:
コメントを投稿