この章ではAndroid版においてのBiz/Browserとしての仕組みの違いについて記載します。
○Android版のCRS実行エンジンはBiz/Browser Vと同等のものを使用しています。
また、内部文字コードにはUnicodeが採用されています。
○メソッド名や変数名、外部リソース定数等の識別子の解決を行う際、全角文字に対しても大文字小文字を区別せずに扱かわれることがあります。
全角英字やギリシャ文字等を用いた識別子を使用する場合はご注意ください。
○使用可能な改行コードは、「\n」または「\r\n」となります。
○日本円の通貨記号は、全角の「¥」が使用されます。
○プラットフォームやアーキテクチャの違いにより、浮動小数点演算の結果がわずかに異なる場合があります。
○Edit系オブジェクト等でIMEを用いて入力中にフォーカスを移動した場合、入力中の文字列が確定されます。
○セキュリティレベルというセキュリティ制御に関する概念を搭載しています。 規則についてはセキュリティレベルについてを参照してください。
○Android OSの仕様上、Biz/Browserが前面に表示されていない状態になった時に自動的にBiz/Browserのプロセスが強制終了される場合があります。
そのため、処理・操作フロー等はそのことを考慮した開発が必要となります。
(CRSプログラムとしては、Root.SetReloginURLメソッド、Root.ReloggedInプロパティ、Root.WindowStateChangedイベント等を用いることで記述可能です)
○Biz/Browser HTは他のBiz/Browser製品とはGUIの外観がそれぞれと異なる場合があります。
○端末やOSに依存する動作に対してはBiz/Browserはその挙動に従います。そのため一部の機能については結果・挙動に差異が出る可能性があります。
○Android 6.0 から追加されたAndroidの設定画面の項目「アプリの権限」で、Biz/Browserが必要な各種機能への権限の許可状態を拒否にした場合、各種機能利用時にBiz/Browserが不安定な挙動をしたり強制終了したりすることがあります。なお、通常インストール直後は必要なすべての権限が許可になります。
※下記の「Biz/Browser HTが要求するパーミッションについて」もご参照ください。
○Root直下のFormのサイズは、常にRootのサイズと連動します。Formのサイズを変更することはできません。
○端末の解像度の倍率が整数倍ではないとき、FlexCheckButton型のセルの表示文字列が、フォントサイズ、Formatプロパティ、セルの値によっては表示が一部欠損することがあります。
○端末に付属のボタンによるキー入力を行った際に、Shiftキーといずれかのキーを同時に押しているとき、Shiftキーが押されている扱いにならないことがあります。
- KeyDownイベントのShiftKeyがfalseになることがあります。
- AltKeyプロパティでShiftと組み合わせたキーにオブジェクトが応答しなかったり、Shiftと組み合わせていないキーにオブジェクトが応答してしまうことがあります。
- Shift+Tabキーを押した際に、フォーカスが前ではなく次に移動することがあります。
○端末に付属のIMEによっては、端末に付属のボタンによるキー入力を行いInputModeなどで入力を制限されている文字をTextBoxなどに入力しようとすると、すでにTextBoxに入力されている文字がキー押下ごとに消えることがあります。
○端末に付属のボタンによるキー入力を行った際に、Biz/Browser HTのアプリが起動している間の最初の1回目のキー押下だけ、一部のキー(UP, LEFT, DOWN, RIGHTキーなど)を押しても押したことになっておらず、そのキーの押下による各種操作が行えないことがあります。
○ソフトウェアキーボードによっては、inputModeなどで入力を制限されている文字を入力したときに、ソフトウェアキーボードの動作が不安定となることがあります。
Biz/Browser HTは他の一般的なAndroidアプリ同様、機能を実現するためにAndroid OSに対しパーミッションと呼ばれるものを要求します。
パーミッションはAndroidアプリがどのような機能に対してアクセスする可能性があるかを明示するもので、Androidアプリのインストール時にその一覧が表示されます。
Androidアプリは要求したパーミッション以外の機能にアクセスすることはAndroid OSによって禁止されます。
ExternalObjectパッケージ(Java連携)を用いてAndroid標準ライブラリやサードパーティ製ライブラリで実行可能となる処理もこのパーミッションによって制限されますので、ライブラリを使用する前に予め必要となるパーミッションをご確認下さい。
Biz/Browser HTがAndroid OSに対して要求するパーミッションは下記のとおりです。
パーミッション |
説明 |
---|---|
android.permission.ACCESS_COARSE_LOCATION |
おおよその位置情報(ネットワーク基地局)へのアクセス許可 |
android.permission.ACCESS_FINE_LOCATION |
詳細な位置情報(GPS)へのアクセス許可 |
android.permission.ACCESS_NETWORK_STATE |
ネットワーク状態へのアクセス許可 |
android.permission.ACCESS_WIFI_STATE |
Wi-Fi状態へのアクセス許可 |
android.permission.BLUETOOTH |
ペアリング済みのBluetoothデバイスへのアクセス許可 |
android.permission.BLUETOOTH_ADMIN |
Bluetoothデバイスの検索とペアリング操作の許可 |
android.permission.BLUETOOTH_CONNECT |
ペアリングされたデバイスに接続する許可 |
android.permission.BLUETOOTH_SCAN |
周囲のBluetoothデバイスをスキャンする許可 |
android.permission.CAMERA |
カメラ操作の許可 |
android.permission.CHANGE_WIFI_STATE |
Wi-Fi状態の変更許可 |
android.permission.DISABLE_KEYGUARD |
キーロックを無効化することの許可 |
android.permission.FLASHLIGHT |
フラッシュライト操作の許可 |
android.permission.FOREGROUND_SERVICE |
フォアグラウンドサービスを作成する許可 |
android.permission.INTERNET |
完全なインターネットアクセスの許可 |
android.permission.NFC |
NFC機能へのアクセス許可 |
android.permission.POST_NOTIFICATIONS |
通知送信の許可 |
android.permission.READ_PHONE_STATE |
電話の状態へのアクセス許可 |
android.permission.RECORD_AUDIO |
音声の録音の許可 |
android.permission.VIBRATE |
バイブレーション制御の許可 |
android.permission.WAKE_LOCK |
スリープ状態の制御などを行うWakeLock機能の許可*3 |
android.permission.WRITE_EXTERNAL_STORAGE |
SDカード内のコンテンツに対するアクセスの許可 |
android.permission.WRITE_SETTINGS |
システムの全般設定の許可(画面の明るさの変更等) |
PC版やMobile版では、画面に表示する文字列に"&"が含まれるとアンダーラインに変化する仕様がありました。表示をMobile版と合わせるため、アンダーラインは付与されませんが代わりに"&"が表示文字列から除外されます。
この動作を無効化し、表示する文字列に直接"&"を表示したい場合は、NoPrefixプロパティを使用してください。
Webサーバへのリクエスト時のUserAgentは以下の値になります。
UserAgentにて処理を分岐している場合ご注意ください。
Biz/Browser HT(Android)
SYS.CLIENTの値は以下になります。
Biz/Browser HT(Android)
またSYS_CLIENT_VERSIONも実行中のバージョンとなるため、既存のCRSプログラム中で、SYS_CLIENT_VERSIONやSYS_CLIENTを利用して処理を分岐していたような場合には注意が必要です。
プラットフォームごとに分岐し、Android版での実行時のみ処理させて他のプラットフォームでの実行時には無視させる分岐処理ができる定数が用意されています。
使用可能な定数は以下になります。
・$Android
Biz/Browser HTでは常に「1」となります。
・$AI
互換のため、Biz/Browser HTでも「1」となります。
・$SmartDevice
互換のため、Biz/Browser HTでも「1」となります。
・$Mobile
Mobile互換モードのときは「1」、それ以外のときは「0」となります。
・$HT
Biz/Browser HTでは常に「1」となります。
起動時にメインウィンドウ(rootオブジェクト)は画面上で最大化され変更することはできません。
root直下のFormオブジェクトはrootのサイズと連動します。またX,Yプロパティに0以外の値を指定した場合無視されます。
StringオブジェクトにはUnicode文字が格納され、文字数や処理単位はUnicode 1文字単位となります。
Mobile互換モード
なお、Root.SetCompatibleModeメソッドを使用し、Mobile互換モードとすることで内部文字コードをShift-Jis(マルチバイト文字)に互換したモードにすることができます。
CRS内における文字コードの変換規則は下記のとおりです。
◆Mobile互換モードがOFF(デフォルト)のとき
---CRSファイル--- ◇CRS解析時は、BOMがある場合はBOMに従い、その他の場合、OSの言語設定が日本語のときShift-JIS、その他の言語設定のときにはISO/IEC 8859-1 となります。
---Stringクラス--- ◇文字数は、UTF-32の数え方と同様です。
---入出力関連--- ◇ByteArrayクラスオブジェクトにセットした文字列はUTF-8として扱います。
◇Fileクラス, Securityパッケージにおける入出力では、UTF-8として扱います。 ・DecryptorクラスDecryptStringメソッドの第二引数のpass(パスワード)はUTF-8として扱われます。 ・EncryptorクラスEncryptStringメソッドの第二引数のpass(パスワード)はUTF-8として扱われます。
◇HTTPパッケージにおける入出力 ・httpRequestのメソッドで指定される文字列はUTF-8として扱います。 ・httpResponseクラスのオブジェクトのレスポンスデータはByteArrayとして扱います。 ・httpResponseクラスのReadLineメソッドではUTF-8として扱われます。ただし、HTTPレスポンスヘッダのContent-Typeにcharsetが指定されていた場合その文字コードの文字列として扱います。
◇XMLパッケージにおける入出力 ・XmlDOMImplementationクラスのParse、LoadメソッドではUTF-8として扱われます ・XmlDocumentクラスのSaveメソッドでは第二引数で指定されたエンコードに従います。 (デフォルト:UTF-8)
◇CSVパッケージにおける入出力 ・CSVDocumentクラスのParseメソッド、Loadメソッド、SaveメソッドではUTF-8として扱われます。 ・CSVDocumentクラスのGetメソッドではUTF-8として扱われます。ただし、HTTPレスポンスヘッダのContent-Typeにcharsetが指定されていた場合その文字コードの文字列として扱います。
|
◆Mobile互換モードがONのとき
---CRSファイル--- ◇CRS解析時は、BOMがある場合はBOMに従い、その他の場合、OSの言語設定が日本語のときShift-JIS、その他の言語設定のときにはISO/IEC 8859-1 となります。
---Stringクラス--- ◇文字数は、UTF-16の数え方と同様です。
---入出力関連--- ◇ByteArrayクラスオブジェクトにセットした文字列はShift-JISとして扱います。
◇Fileクラス, Securityパッケージにおける入出力では、Shift-JISとして扱います。 ・DecryptorクラスDecryptStringメソッドの第二引数のpass(パスワード)はShift-JISとして扱われます。 ・EncryptorクラスEncryptStringメソッドの第二引数のpass(パスワード)はShift-JISとして扱われます。
◇HTTPパッケージにおける入出力 ・httpRequestのメソッドで指定される文字列はShift-JISとして扱います。 ・httpResponseクラスのオブジェクトのレスポンスデータはByteArrayとして扱います。 ・httpResponseクラスのReadLineメソッドではShift-JISとして扱われます。ただし、HTTPレスポンスヘッダのContent-Typeにcharsetが指定されていた場合その文字コードの文字列として扱います。
◇XMLパッケージにおける入出力 ・XmlDOMImplementationクラスのParse、LoadメソッドではShift-JISとして扱われます ・XmlDocumentクラスのSaveメソッドでは第二引数で指定されたエンコードに従います。 (デフォルト:UTF-8)
◇CSVパッケージにおける入出力 ・CSVDocumentクラスのParseメソッド、Loadメソッド、SaveメソッドではShift-JISとして扱われます。 ・CSVDocumentクラスのGetメソッドではShift-JISとして扱われます。ただし、HTTPレスポンスヘッダのContent-Typeにcharsetが指定されていた場合その文字コードの文字列として扱います。
|
Android版ではMaxLengthプロパティはPC版と異なり文字数(Unicode単位) で統一されています。
Android版ではIMEの入力モード(直接入力、かな入力等)を制御することはできません。
IMEモードを指定した場合のSIP(Software Input Panel)の状態につきましては各クラスのIMEModeプロパティを参照してください。
また、SIP(Software Input Panel)の表示内容についてはSIPModeプロパティを参照して下さい。
端末内蔵の標準フォントの違いにより、他のBiz/Browser製品と比較して、行間や文字幅が異なることがあります。
そのため、文字列が表示領域に収まらなかった場合の表示や、ワードラップ処理の結果が異なることがあります。
また、太字や斜体については端末に該当するフォントが存在する場合のみ適用されます。
下線はAndroid版では対応しておりません。
OSの違いによりドライブやディレクトリの構造がWindowsと異なるため、絶対パスでのアクセスなどにて動作しない場合があります。
Android版でのプライベートルート、パブリックルートのパスはFileSystemクラスのページを参照して下さい。
パスの区切り文字は"\"ではなく"/"を用います。
ファイルパスを表すワイルドカードの扱いがWindowsとは異なります。
(例:"*.*" を指定した場合、"." を1つ以上含むファイルのみが対象となります)
Android版では、ButtonクラスのRClickedイベントで渡されるEventオブジェクトの子オブジェクトとして、xPos、yPosオブジェクトは含まれません。
//.SYSオブジェクトのプロパティは以下となります。
プロパティ名 |
説明 |
---|---|
String MODELNAME
|
メーカーが設定したメーカー名や機種名が取得できます。 メーカーが自由に設定できるため必ず取得できるとは限りません。また書式に規則性はありません。 このプロパティを用いると機種に依存した条件分岐やコーディングが可能になります。 |
String PLATFORM
|
プラットフォーム種別が取得できます。 端末のCPU命令セットを取得できます。 |
String DEVICEID
|
端末を識別するIDが取得できます。 この値を用いるとサーバ側で機体個別の管理やロギングなどが可能になります。 なお、このIDの不変性や一意性は保証されていませんのでご注意下さい。 詳しくはSYSオブジェクトのページを参照して下さい。 |
Biz/Browser HTでは開発やデバッグを容易にするための補助機能として、画面の表示倍率やスクロールバーサイズをスクリプトを書かずに指定することの出来る「スケーリング設定画面」を用意しています。
スケーリング設定画面で設定すると端末内で実行するすべてのCRSプログラムに一律で反映します。
アプリケーションシステムとして個々の画面でのスケーリング設定を行う場合には、下記のスケール関連設定をCRSスクリプトに記述して行なってください。
機能 |
対応するプロパティ |
---|---|
表示倍率設定 |
|
「スケーリング設定」画面 各項目
□スケール値を上書きする
チェックをつけた状態で[OK]ボタンを押下すると各倍率を反映して表示します。
チェックを外した状態で[OK]ボタンを押下すると各倍率を「1.0」に戻します。
□水平方向倍率
水平方向(X, Width等)の表示倍率を指定します。
□垂直方向倍率
垂直方向(Y, Height等)の表示倍率を指定します。
□フォント倍率
フォントの表示倍率を変更します。
□[倍率リセット]ボタン
「デフォルトのスケール値を上書きする」にチェックが入った状態で有効になります。
各倍率欄に「1.0」をセットします。[OK]を押下するとセットされた倍率で表示されます。
※Formが存在しない、スクリプトが例外などで停止している場合には動作しません。
※スクリプトのスケーリング関連の記述が更新されることはありません。
PC版と同様、Biz/Browser HTでは任意のCRSを直接実行するためのショートカットを作成することができます。
作成方法はAndroid OSのバージョンや端末のホームアプリなどにより異なります。
なお、一般的には下記の方法で作成することができます。
○ Android 8以上の場合
ドロワー(アプリ一覧画面)でBiz/Browserのアイコンをロングタップ→「ショートカット」(もしくは「ショートカット作成」)タブをタップ→「ショートカット作成」画面でショートカットの設定を行います→Biz/Browserのアイコンをロングタップ→ショートカットを配置したい場所で指を離します。
※Biz/Browser HT ver 1.3.0で追加されました。
※本機能を使用する前に、Biz/Browserを一度起動する必要があります。
○ Android 7以下の場合
ドロワー(アプリ一覧画面)でBiz/Browserのアイコンをロングタップ→「ウィジェット」タブをタップ→Biz/Browserのアイコンをロングタップ→ショートカットを配置したい場所で指を離します→「ショートカット作成」画面でショートカットの設定を行います。
※Biz/Browser HT ver 1.3.0以降のバージョンでAndroid 8以上の端末でもこの操作でショートカットを作成可能ですが、端末によっては正しく動作しない可能性があります。
※Biz/Browser HT ver 1.3.0以降のバージョンでAndroid 8以上の端末では、OSのバージョンや端末によって「ウィジェット」タブが表示されない場合があります。後述する「Biz/Browserのアイコンをロングタップした場合の表示例」を参照してください。
「ショートカット作成」画面 各項目
□ショートカット名
ショートカットアイコン下部に表示される文字列を指定します。
□ログイン先URL
Biz/Browserの起動後に自動的にログインするCRSのURLを指定します。
□QRコードからURLを読み取る
カメラを起動し、QRコードからログイン先URLを読み取ります。*1
□ブックマークから選択
「ショートカット名」と「ログイン先」をBiz/Browserのブックマークに登録されているURLから選択することができます。
ブックマークの名前が空白の場合、現在入力されている「ショートカット名」が維持されます。*2
□アイコンの選択
タップすることでアイコンを選択するダイアログが表示されます。
適切なアイコンのサイズはAndroid OSのバージョンや端末の解像度によって異なりますのでご注意下さい。
□コアダンプ出力モード
Biz/Browserの実行中にハンドリングされない例外がCRS実行エンジンに補足された場合、デバッグ情報(コアダンプ)を出力し、処理を中断します。
コアダンプ出力モードは下記のモードが指定可能です。
値 |
説明 |
---|---|
0 |
デバッグ情報(コアダンプ)を出力しません |
1 |
ハンドリングされていない例外が発生した場合、デバッグ情報(コアダンプ)を出力します。 コアダンプがすでに存在する場合、上書きされます。 (従来のBiz/Browserの動作と同等です) |
2 |
ハンドリングの有無にかかわらず、例外が発生するたびにデバッグ情報(コアダンプ)を出力します。 コアダンプファイル名にはタスクIDと4桁の連番が付与され、コアダンプが出力される度に新たに作成されます。 |
デフォルトでは1が選択されています。
○ Biz/Browserのアイコンをロングタップした場合の表示例
Android 11の例 |
Android 12の例 |
Biz/Browser HT ver 1.2.6より、Android11以降の端末でアプリケーション専用ディレクトリ以外のディレクトリにあるファイルにアクセスを行う場合、OSに対してユーザー操作で許可をとる必要があります。
ファイルアクセスを行う一部のメソッドで、許可が必要なディレクトリのパスを指定すると、OSのディレクトリの選択画面を表示しユーザーからアクセスの許可を取得します。
初期状態で対象のディレクトリが選ばれていますので、画面を操作して許可を取得してください。一度許可を取得したディレクトリに対しては、Biz/Browserを再インストールするまでディレクトリの選択画面は表示されません。
※画面はOSバージョンや端末によって異なる場合があります。
なお、内蔵ディレクトリ直下(/sdcard,/storage/emulated/0)やダウンロードディレクトリ(/sdcard/Download,/storage/emulated/0/Download)等、一部のディレクトリでは許可を取得できません。
※Android 11以降でもダウンロードディレクトリでファイルの読み込み、書き込みが可能な場合がありますが、他のアプリで作成したファイルを開くことができないなどの制限があります。