編輯:Android開發實例
今天和同事共同討論了一個關於WebView中的文本控件去獲得系統聯系人的功能,之前單純的以為只是點擊文本框的時候彈出系統聯系人Activity就ok了。立馬浮現的想法就是在java方法中實現跳轉功能,然後通過Js事件調用java方法,後面才知道選中某個聯系人之後還要獲得聯系人號碼賦給文本框。當時我就單純的以為應該實現不了吧,但後來同事一提醒,如果傳遞號碼作為客戶端頁面一個Js事件的參數然後為文本框賦值的話咧。這樣確實是可行的,但java調用客戶端Js的方法入口在哪裡咧(必須是在關閉系統聯系人之後,重現展現含有WebView的Activty時調用),說到這裡應該有部分人會想到一個方法:onActivityResult();對就是這個方法在關閉系統聯系人Activity之後會回調。但前提是調用系統聯系人時是startActivityForResult();
整個思路就是這樣的下面貼一些具體代碼:
Java代碼:(1)點擊文本框時調用Java方法彈出系統聯系人(怎樣Js調用Java方法在下面的Js代碼中)
// 與網頁進行交互的addJavascriptInterface()的方法
browser.addJavascriptInterface(new Object() {
@SuppressWarnings("unused")
public void getContacts() {
Intent i1 = new Intent(Intent.ACTION_PICK,
android.provider.Contacts.People.CONTENT_URI);
startActivityForResult(i1, CODE_PHONEBOOK);
}
}, "xxxxxxxx");
(2)獲得聯系人之後調用客戶端Js[setText(var value)]方法為文本框賦值
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
Cursor c = null;
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CODE_PHONEBOOK) {// 電話本
try {
if (data != null) {
c = getContentResolver().query(data.getData(), null, null,
null, null);
}
if (c != null) {
c.moveToFirst();
for (int i = 0; i < c.getColumnCount(); i++) {
String name = c.getColumnName(i);
String phoneNum = c.getString(i);
if (name.equalsIgnoreCase("number")) {
currentWebView.loadUrl("javascript:setText('"
+ phoneNum + "')");
break;
}
}
c.close();
}
} catch (Exception e) {
e.getMessage();
}
}
}
客戶端Js代碼:
<html>
<head>
<script language="javascript" type="text/javascript">
function setText(xx){
document.getElementById('test').value=xx;
}
</script>
</head>
<body>
<input id="test" type="text" onclick="javascript:window.xxxxxxxx.getContacts()" />
</body>
</html>
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
Android M指紋的資料太少,經過一段時間閱讀原生Android代碼,寫了以下例子,貢獻出來給需要幫助的人。 以下內容基於64位的高通CPU,
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
在 Android 中,多數情況下每個程序都是在各自獨立的 Linux 進程中運行的。當一個程序或其某些部分被請求時,它的進程就“出生”了;當這個程序沒有必要再運