作者LaPass (LaPass)
看板AndroidDev
標題[問題] 讓網頁關掉Activity
時間Mon Apr 2 15:23:43 2012
目前打算把一些功能使用網頁去呈現
也就是說,讓自己寫的apk開個網頁,顯示出來,做一些操作
例如新增資料、修改資料、刪除資料之類的
但是,現在的需求是
在網頁的動作結束之後,能用javascript關掉網頁的activity
請問該怎麼做?
已經試過 WebView 的 addjavascriptinterface
這個可以讓網頁上的javascript去呼叫自定義的java程式碼
但是系統底層有bug,2.X以前的都會當掉的樣子
這條路不通
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.16.65
1F:→ ckm0089:試試看用javascript轉址 用webclient去攔截開啟的網址 04/02 15:52
2F:→ ckm0089:當抓到特定網址就把activity關掉如何? 04/02 15:52
3F:→ LaPass:感謝提示,成功了 XD 04/02 16:30
試出來可行的辦法是這樣:
wv = (WebView)findViewById(R.id.webView);
wv.loadUrl("
http://nothishost.com");
wv.setWebViewClient(new WebViewClient()
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
if("test:close".equalsIgnoreCase(url)) finish();
super.onPageStarted(view, url, favicon);
}
});
在開始讀取頁面的時候,會去檢查網址是不是test:close
如果是的話,就把activity關掉
另外,addjavascriptinterface
在api lv15上試過是ok的
用addjavascriptinterface的功能比較強
只要java能寫得出來的通通都能執行
只是版號真的太高,用那個的話,會有多人不能用
※ 編輯: LaPass 來自: 61.59.16.65 (04/02 16:42)
4F:推 No:addJavascriptInterface Since: API Level 1 04/03 14:58
5F:推 No:我在2.1版API用過,雖然用途不同但應該可以吧~ 04/03 15:00
6F:→ Killercat:它的bug不是當掉,是2.3的部分rom(應該以全修正)會叫 04/03 18:09
7F:→ Killercat:不到,這是因為google耍白痴的關係 04/03 18:09
8F:→ Killercat:當然,你要hijack網址也是一種好方法就是.... 04/03 18:09
9F:→ LaPass:我用API 10結果整個當掉了說... QQ 04/04 15:11
10F:→ Killercat:我覺得當掉是不是要看一下原因,因為我自己的專案 04/04 18:50
11F:→ Killercat:以前有用到這個,是一個流通性很廣的專案(大公司的app) 04/04 18:50
12F:→ Killercat:完全沒有收到類似因此當掉的QA Report說(抓頭) 04/04 18:50
13F:推 No:你有用UI-Thread去執行callback回java的部份嗎? 04/04 19:00
14F:推 No:The Java object that is bound runs in another thread 04/04 19:02
15F:→ No:and not in the thread that it was constructed in. 04/04 19:02
16F:→ LaPass:我連放Log.d都會當掉... 他顯示什麼字串陣列的那個錯誤,去 04/04 19:24
17F:→ LaPass:google後,看討論說是底層的問題 04/04 19:24
18F:→ Killercat:你說的底層是指2.3 google耍白痴 改引擎卻沒有實作java 04/05 12:11
19F:→ Killercat:script interface的部分,除此以外還有什麼bug嗎? @@a 04/05 12:11
20F:→ Killercat:另外我沒額外開一個thread去跑 因為它會自己跑在另外 04/05 12:12
21F:→ Killercat:一個instance的樣子(我沒記錯的話) 04/05 12:12
22F:→ Killercat:我當年的專案支援到1.5 也是用JSI跑沒問題 04/05 12:13
23F:→ Killercat:後來的版本支援道2.2 也沒有任何問題 04/05 12:19
25F:→ Killercat:是。不過這是image層的錯 不是sdk層的錯誤...er.. 04/05 14:40
26F:→ Killercat:另外這篇為什麼那麼眼熟 好像是我寫的?XD? 04/05 14:40
27F:→ Killercat:應該不是 XD 只是用字遣詞跟範例都很像... 04/05 14:41
28F:推 Killercat:另外理論上現在應該已經極少有手機有這bug了... 04/05 14:43
29F:推 No:所以...恭喜LaPass手上有一台稀有的手機 (誤) 04/05 16:58
30F:→ LaPass:我是用模擬器說.... orz.... 04/05 17:44
31F:→ Killercat:我記得2.3.3的image有改過 你要不要更新以後試試看? 04/05 18:18
32F:→ Killercat:2.3.3的問題還不止這個... 04/05 18:18