Android
AndroidはContentObserverを提供し、ContentProviderのデータ変更を監視する。 SMS発送を監視するサンプル (サンプルではActivityですが、Activityを起動しないと監視できないので、現実的ではない。 Serviceで実装すべきである) <uses-permission android:name="android.permission.READ_SMS"/> package com.example.lig</uses-permission>…
Android自身は大量のContentProviderを提供してあり、それぞれquery(),insert(),delete(),update()などを実装してある。 Android連絡先のUri ContactsContract.Contacts.CONTENT_URI : 連絡先管理Uri ContactsContract.CommonDataKinds.Phone.CONTENT_URI : …
実装の流れ ContentProviderサブクラス実装 AndroidManifest.xml登録 ContentResolverサブクラス実装 実行 package com.example.liguofeng.contentprovidersample; import android.content.ContentProvider; import android.content.ContentValues; import a…
ContentProviderはAndroidアプリの間でデータやり取りを行うために用意されてある標準APIである。 データ取得と提供 Androidアプリのデータ提供は、ContentProviderを利用し、Uri指定で提供する。 Androidアプリのデータ取得は、ContentResolverを利用し、Ur…
Tabページを追加する際のTabHost.TabSpectのメソッドは setContect(int viewId) - id指定のViewをTabページにする setContent(Intent intent) - Intentに対応するActivityをTabページにする サンプルコード TabActivity1,TabActivity2,TabActivity3と対応す…
FlagはIntentに対して制御を追加する。 addFlags()で追加する。 常用Flag FLAG_ACTIVITY_BROUGHT_TO_FRONT このFlagで起動したActivityが既に存在する場合、Activityキューから前面に出す。 FLAG_ACTIVITY_CLEAR_TOP このFlagはsingleTaskモードで起動したAc…
IntentのExtraはAction間のデータやり取りで利用される。 Extra属性値はBundleオブジェクトである。 サンプルコード
Data属性はAction属性にデータを提供する。 特性: Data属性値はUriオブジェクトである Uriの形式 scheme://host:port/path 例:content://com.android.contacts/contacts/1 Type属性はData属性が指定したUriのMINEタイプを指定する。 abc/xyzのフォーマット…
package com.example.liguofeng.intentsample; import android.app.Activity; import android.content.ComponentName; import android.content.CursorLoader; import android.content.Intent; import android.database.Cursor; import android.net.Uri; impo…
Intentを通して自分アプリ以外、システムActivityを起動することも可能です。 適切な権限を設定し、Adnroid内部で提供している大量のAction、Categoryの定数を利用すればできる。 Intentの定数 http://developer.android.com/intl/ja/reference/android/cont…
IntentのComponent属性はComponentNameオブジェクトを設定し、 どのコンポーネントを起動するかを指定する Componentのコンストラクタ ・Component(String pkg, String cls) ・Component(Context pkg, String cls) ・Component(Context pkg, Class cls) Inte…
Action属性は抽象的な振る舞いである。 これは、Struts2のAction処理後、SUCCESSを返すと似ている。 使用流れ ① AndroidManifest.xmlのAcvivityのAction属性、Category属性を設定する ② ActivityでIntentにActionとCategoryを設定する ③ IntentでActivityを…
Intentは日本語で「意図」という意味である。 ActivityからActivity(Service, BroadcastService)を起動する時に直接起動するのではなく、Intentで意図(どのActivityを起動)を表して起動する。 Androidの重要なコンポーネントであるActivity、Service、Broadc…
サンプル概要 Activityは二つのFragment 1. BookListFragment - 本リストを表示する 2. BookDetailFragment - 本の詳細を表示する を含み、本をクリックした際にその詳細が表示される。 作成手順 ① BookContent(Bookモデル含む)を作成する ② BookDetailFra…
FragmentはAndroid3.0から導入した新しいAPIである。 Fragmentは言葉の通り断片の意味でActivityの断片である。 目的 タブレットの出現により画面が大きくなり、 スマホより多くの部品を一つの画面に配置できるようになったからのである。 Fragmentの特性 Fr…
Andoridはアプリ起動時には 1. Taskを生成 2. アプリの入り口Activity起動(AdnroidManifest.xmlのMAIN指定されたもの) AndroidはTaskについてAPIを提供してないため、 開発者はTaskのアクセスすることができなく、 ただActivityのgetTaskId()メソッドで所在…
MainActivity.java package com.example.liguofeng.responsefromactivity;import android.app.Activity;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android…
MainActivity.java package com.example.liguofeng.requestdatatoactivity;import android.app.Activity;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import androi…
MainActivity.java package com.example.liguofeng.startandfinishactivity;import android.app.Activity;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import andro…
①LauncherActivity継承クラスをつくる MainActivity.java package com.example.liguofeng.launcheractivitytest;import android.app.ExpandableListActivity;import android.app.LauncherActivity;import android.content.Intent;import android.preference.…
ActivitiyはWebアプリにおいてのServletと似ている。 Webアプリにおいて複数のServletが存在し、 Servlet(JSPの本質もServlet)は主にユーザと情報のやり取りを行い、情報を表示する。 Activityは いつインスタンス生成されるか、 Activityのメソッドはいつ呼…
サブスレッドがUI更新できないため、Androidが提供しているソリューション。 1. Handler 2. Activity.runOnUiThread(Runnable) 3. View.post(Runnable) 4. View.post(Runnable, long) Handler以外は少し実装が煩雑である(と聞いた・・) AsyncTaskは簡易方法…
Handlerが動作するために必要なコンポーネント Message - Handlerが送受信&処理する対象 Looper - loopメソッドでMessageQueueのメッセージを取得し、Handlerにメッセージを渡す - loopメソッドは無限ループ - スレッド毎に一つのみのLooper対象をもつ。 - …
パフォーマンス面の考慮でAndroidのUI操作はスレッドセーフではない。 これによって複数のスレッドでUI操作が行われるとスレッドセーフの問題が発生する。 これを解決するためにAndroidは一つのルールを決めてある。 「UIスレッドのみActivity内のUIを変更で…
システム設定情報変更の検知は ①onConfigurationChangedメソッドをOverrideする ②AndroidManifest.xmlのActivityのandroid:configChanges属性を設定する 属性値は(脱字あるかも) mcc,mnc,locale,touchscreen,keyboard,keyboardHidden, navigation,orientit…
Configurationクラスはデバイスの設定(ユーザ毎の設定、システム設定を含む)情報を表している。 Activity内では、下記方法でシステムのConfigurationオブジェクトを取得できる。 Configuration config = getResource().getConfiguration(); サンプルコード…
① Viewを継承してコンポーネントを作成 MainActivity.java package com.example.liguofeng.followmeevent;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.uti…
① タグにリスナー設定 activity_main.java <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> </linearlayout>