顯示具有 android 標籤的文章。 顯示所有文章
顯示具有 android 標籤的文章。 顯示所有文章

2022-07-28

一個奇異的坑:window.alert() 作用在 android chrome app 中

 今天在協助同事處理一個問題,此問題是這樣的

網頁中使用 onScan.js 來做 barcode scanner 的動作,同事的操作的殾用帶有 scanner 功能的 android pda 開同事寫好的網頁,預設的動作是:利用 scanner 掃描某一編號而成的 QRcode,由 scanner 解析完的文字拿去到一個 json 中搜尋,若找不到資料就回饋 window.alert("查無資料") 後,就進行 window.location.reload()

此狀況,如果是在筆電或桌機的環境,使用 chrome 開網頁,然後電腦用的 scanner 是用 usb 外接的,以上的操作一切正常。

但改用帶有 scanner 的 android pda 時,window.alert() => window.location.reload() 前的動的作一切正常,但 reload() 後,想再接著掃描編號一定存在的 QRcode 時就發現怎麼掃描資料都進不去網頁中。

同事找在下處理時,是因為該 onScan.js 套件是在下推的,而 onScan.js 的用法也是在下寫的,而同事只有將相關用法寫成 js module 的方式來載入而已。

本來一開始在下還以為會不會是載入順序造成異常,但確沒發現 console 有錯誤。

後來在測試宣告時發現,假設我在 onloaded 後要求畫面上的一個 input trigger('focus') ,在reload 前,該 input 確實會出現 onfocus 的效果(假設是邊框會變深色),但 reload 後卻出現的狀況是沒有 onfocus…

交叉測試了許久才發現…原來在 android 的 chrome 中,當網頁使用 window.alert(),在按下 alert 的確定按鈕後,發現 chrome 會變成不是當前作用中的 app,等於 chrome blur 了,不是 chrome 中的網頁或該網頁的元件本來 focus 變 blur 了,而是 chrome 這個 app 不是作用中視窗了…所以該網頁中的 script 操作其實還是有在運行,只是…因為 scanner 要把掃描解析後的結果只能輸入進當前作用中的 app 畫面中…結果因為表面上畫面還是在 chrome 中,但實際上 chrome 已是非作用中的 app了…

這狀況在電腦中有點類似,你打開記事本在裡面打字,然後你滑鼠移到工具列上空白處點了一下,這次當前作用中視窗就由記事本變成了「工具列」了…

由於此狀況的坑非常特別,所以特來記錄(也許…window.confirm() 也有一樣的情況)

2019-07-14

如何要求 PhoneGap Build 在建置(build)專案時要求使用新一點的 android sdk 來建置

標題不太確定這樣用會不會怪,先主要說明一下狀況…

同事那有個案子的需求是要 app 在今年八月前更新內核 api 上 android 8(api 26) 和 ios 13(?…這我不確定,反正是要新一點的)。

但公司給的開發機,一支小米 4i 在不去刷 thirdparty rom 的情況下只能官方更新到 android 5 ,而一支 iphone 5 還 6 只能到 ios 10 ,所以我同事除了只能先發佈上架後請有支援比較新的系統的其他同事手機去試之外,他就想要在 mac mini 上來當作以後建置的環境。

mac mini 的操作和環境建置的問題先不論,主要是這個案子的 app 在之前的人在寫時是使用 phonegap 來開發,然後用 Adobe PhoneGap Build(以下簡稱 PGB) 來做線上建置(build)的。

但同事說他原本在 local 使用 cordova build android 的過程並沒有 fail ,然後將專案 zip 後上傳至 PBO 建置後的 app 在上架 google play 後,有測試的同事反應其中某個功能的相機是沒有反應的,同事讓我協助測試一下。

2018-10-25

初玩 Flutter

環境:win7 x64 + vscode + android studio
參考網頁:https://jonny-huang.github.io/flutter/flutter_001/

依參考網頁的步驟做就行了,但…我在建立首個 Flutter project 之前我有發現我在建立  AVD 時的「Emulated Performance」的 Graphics 是灰的不能選…而且實際啟動 AVD 發現 CPU (i5 4460) 全核是 100% ,然後溫度大概維持在 74度 左右,我當下確實電腦還有在跑其他東西,但使用率 100% 我倒是第一次見過…感覺上是因為都是用軟體模擬的關係造成的…就網路上一直找辦法。

2013-05-20

android-studio在windows似乎無法正常執行,但你可以參考下面的方式

google i/o大展過後,我對android-studio跟新版的google-map十分有興趣…

new-google-map提出申請之後還要等google給你邀請信…

android-studio可以直接網路下載了
網址:http://developer.android.com/sdk/installing/studio.html

不過,我下載安裝完之後,在程式集那邊執行與到安裝目錄下直接點studio.exe,android-studio都給我無消無息…

後來我就放棄…

然後到了今天,在T客邦看到「Android Studio 無法啟動的解決方法(Windows only)」說要設定環境變數…但我按照文中的意思設定在環境變數中的path,android-studio也不給我啟動。

然後我在下載android-studio的網址下方有看到官方自己寫的啟動需知,針對windows,官方是說要在環境變數那設定一個「JAVA_HOME」,值就設定java7 jdk的安裝路徑就行了…

然後,我再到android-studio的安裝目錄\bin\studio.bat,用純文字打開可以看到

::----------------------------------------------------------------------
:: Android Studio startup script.
::----------------------------------------------------------------------
:: ---------------------------------------------------------------------
:: Locate a JDK installation directory which will be used to run the IDE.
:: Try (in order): ANDROID_STUDIO_JDK, ..\jre, JDK_HOME, JAVA_HOME.
:: ---------------------------------------------------------------------
IF EXIST "%ANDROID_STUDIO_JDK%" SET JDK=%ANDROID_STUDIO_JDK%
IF NOT "%JDK%" == "" GOTO jdk
IF EXIST "%~dp0\..\jre" SET JDK=%~dp0\..\jre
IF NOT "%JDK%" == "" GOTO jdk
IF EXIST "%JDK_HOME%" SET JDK=%JDK_HOME%
IF NOT "%JDK%" == "" GOTO jdk
IF EXIST "%JAVA_HOME%" SET JDK=%JAVA_HOME%
IF "%JDK%" == "" GOTO error
...
...
...
...
...
...
所以可以知道,android-studio啟動時會去檢查你的環境變數有沒有ANDROID_STUDIO_JDK、JDK_HOME或JAVA_HOME

所以WINDOWS的使用者在用ANDROID-STUDIO還啟動失敗的,可以試試上述的方式