Android開發關於AlertDialog兩三事

開發android都知道,要顯示視窗訊息,不是那直覺方便的,需要搭配Handler參與才能走得順。

# 原本以為myAlterDialog.show()後,就可以馬上執行其他程式商業邏輯,完成後停掉myAlterDialog即可
# (例如我們要實現APP「顯示"請稍後",然後背景執行其他程式商業邏輯,執行完取消"請稍後"」)
# 但我沒想到程式商業邏輯需要寫在Handler裡面才不會讓卡住。

public class MainActivity extends AppCompatActivity {
  AlertDialog.Builder waitBuilder = null;
  AlertDialog waitDialog;
  ...
  protected void onCreate(Bundle savedInstanceState) {
     ...
     waitBuilder = new AlertDialog.Builder(activity);
     waitBuilder.setCancelable(false);
     waitBuilder.setView(R.layout.loading_dialog);
     myAlterDialog = waitBuilder.create();
  }

  public void onStart() {

    adapter.setOnItemLongClickListener(.....){
      ...
      runOnUiThread(new Runnable() {
        @Override
	public void run() {
          myAlterDialog.show();
	  new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
	    @Override
 	    public void run() {
              runOnUiThread(new Runnable() {
                @Override
                public void run() {
                  ...
                  Toast.makeText(activity,"success"....
                  myAlterDialog.dismiss();
                }
              });
	    }
	  }, 300);	
        }
      }
      ...
     });		
   });
}

麻瓜勿擾,GIT文字筆記

2011年第一隻android app有數萬下載量,到2019年我又練習寫了一個「GIT文字筆記」,是個「麻瓜勿擾的APP」。
該APP有開源,久了我也幾乎忘了有這,最近收到app要改目標版本,否則要下架,於是我更新時,再加碼限制android 13或以上才能安裝使用;
果然幾乎沒人用,到目前只有50+下載 XD

我這APP也很奇葩,用git shallow減少clone下載版本量呢。

https://play.google.com/store/apps/details?id=inmethod.gitnotetaking

java jdbc 連到 M$ access “ucanaccess”

年紀一大把了,還在搞Acess,慘

你可以存取的(u can access),到此下載

解開後,除了本體ucanaccess-xxx.jar外,在lib目錄下的jar檔也需要。

其中存取access的關鍵jackcess-xxx.jar (目前最新版4.0.6),可另外下載取代ucanaccess內建的3.0.1版本

JDBC Connection String

jdbc:ucanaccess://c:/xxx.mdb;memory=false

GIT 版本控管,Client/Server 應該要不分彼(THRIES)此(OURS)才對

一般來說做事不要分彼此,若出現文件衝突,就只好看誰是老大,就聽誰的

Checkout

git checkout --theirs src/.
git checkout --ours src/.

Merge 也很精采,有所謂的合併策略strategy,先記錄下來有這回事,https://git-scm.com/docs/merge-strategies,以後再研究


			
		

AlmaLinux 9 修改sshd port號碼

以前修改sshd port 號碼很簡單,因為我把selinux關掉了,現在年紀大了,心臟不好,不敢關閉selinux,只好乖乖照規定執行。

#修改port
vi /etc/ssh/sshd_config

#讓selinux放行
semanage port -a -t ssh_port_t -p tcp <port 號碼>

#firewall-cmd放行port號碼
firewall-cmd --add-port=<號碼>/tcp --permanent
firewall-cmd --reload

#然後重開機囉

Nextcloud又一個坑,使用onlyoffice造成的

上次提到我又回歸使用 onlyoffice 75.1版,過了一段安穩日子後,沒想到居然遇到有個pdf,裡面小圖片不見的靈異現象,我還罵同事眼睛業障重,叫同事把看不到圖的那個pdf檔案,直接下載改用adobe reader看看,結果是「要不是我親眼所見,我是萬萬不能相信啊」,還真的連我都業障重,onlyoffice就是看不到小圖片,而adobe reader可以。

後來我先解除onlyoffice檢視pdf檔案設定,改使用nextcloud外掛 pdf.js, 就可以看到原本看不到的小圖片了,坑真的很多很大。

問題雖暫時解決,但pdf.js 功能太少了,不能鎖下載,也不能有浮水印,Gold害。

在沒有更好的處理方案前,我只好先搞定“公司規定不能下載PDF”的規定;最後手動修改程式,直接暴力停用pdf.js的下載功能
環境是:nextcloud 26,pdf.js 2.6

vi /var/www/html/apps/viewer/js/viewer-main.js
# 找到以下字串,將紅色部分刪掉
,e.canDownload?t(“NcActionLink”,{attrs:{download:……,e._v(” “),e.canDelete?…

cd /var/www/html/apps/files_pdfviewer
egrep -r "toolbarViewerRight" .|more
# 找到toolbarViewerRight 後面加上 hidden='true'

另外,安裝完pdf.js 我不確定是否要執行”啟用” javascript功能,但還是記下來好了(官網有特別提到此指令)

docker exec --user www-data -it nextcloud2 php occ config:app:set files_pdfviewer enable_scripting --value=yes

			
		

Android 13真真氣死人,APP欲取得外部檔案真實路徑有夠困難

後來我才知道 Android 10 (API Level 29) 已經預告取得外部檔案真實路徑的方式已經改

好險,有神人寫了好用的程式能「取得檔案的絕對路徑」,並且在 stackoverflow 說明原由,使用方式也超級方便的,請參找此神人的程式 https://github.com/HBiSoft/PickiT,一定不會失望而歸的。

「FydeOS – 为中国用户打造的ChromeOS」初體驗

公司希望Android撰寫的測試程式移植到windows平台上,但是這樣做很耗時,程式要重新開發; 因此我想到讓筆電或電腦桌機能夠直接執行android, 這樣就能解決問題了。

我排除已知的解決方案之一-Android模擬器、windows 11模擬andorid不考慮(因為要停用了)。

最後我希望類似chrome book 使用chrome OS直接支援android 的方式,沒想到還真的找到了 –FydeOS

安裝FydeOS有些眉角要注意的:

  1. 筆電-panasonic CF-NX3,12G Ram
  2. 官方安裝方式,我要連續安裝好幾次才成功
  3. 安裝時,我的舊電腦BIOS先調整非UEFI才能安裝,安裝後再調回UEFI,才能啟用開發者模式(v18版)
  4. 安裝時,我使用本機帳號,不線上註冊
  5. 安裝完畢,FydeOS系統成功開機,啟用Android位置權限失敗,後來發現安裝Open GApps,GApps會將Play商店裝起來,才能啟用位置權限
  6. Play商店無法登入(未通過Play防護安全認證)
  7. 其他方面很順,簡直就是chrome book

Linux背景執行

以前我在Linux要背景執行程式,在最後面加上 「&」即可,後來發現這樣好像不正統,因此改用nohub以shell方式執行。

啟動(start.sh)

#!/bin/bash
nohup /usr/lib/jvm/jdk-17-oracle-x64/bin/java -jar api.jar &> /dev/null &

結束(stop.sh)

#!/bin/bash
ps -ef | grep "api.jar" | grep -v grep | sed 's/ [ ]*/:/g'|cut -d: -f2| kill -9 `cat`

nohub解釋如下(出處)

說明
nohup 指令會執行 Command 參數及任何相關 Arg 參數所指定的指令,忽略所有掛斷信號 (SIGHUP) 或修改使用 -p 選項指定的處理程序以忽略所有 SIGHUP 信號。 SIGHUP 是在處理程序的控制端關閉時傳送給處理程序的信號。

在登出之後,也可以使用 nohup 指令在背景中執行程式。 To run a nohup command in the background, add an & (ampersand) to the end of the command.
1 2 3 4 ... 75