[英]How to open new Activity for Vcard and how to open Google Maps app?
我正在制作一個二維碼掃描儀應用程序,但我無法完成兩件事。 第一個是將有關Vcard
的信息傳遞給新的 Activity。 這是我寫的代碼:
@Override
public void handleResult(Result rawResult) {
processRawResult(rawResult.getText());
}
private void processRawResult(String text){
if (text.startsWith("BEGIN:")) {
String[] tokens = text.split("\n");
QRVcardModel qrVcardModel = new QRVcardModel();
for (int i = 0; i < tokens.length; i++) {
if (tokens[i].startsWith("BEGIN:")) {
qrVcardModel.setType(tokens[i].substring("BEGIN:".length()));
} else if (tokens[i].startsWith("N:")) {
qrVcardModel.setName(tokens[i].substring("N:".length()));
} else if (tokens[i].startsWith("ORG:")) {
qrVcardModel.setOrg(tokens[i].substring("ORG:".length()));
} else if (tokens[i].startsWith("TEL:")) {
qrVcardModel.setTel(tokens[i].substring("TEL:".length()));
} else if (tokens[i].startsWith("URl:")) {
qrVcardModel.setUrl(tokens[i].substring("URL:".length()));
} else if (tokens[i].startsWith("EMAIL:")) {
qrVcardModel.setEmail(tokens[i].substring("EMAIL:".length()));
} else if (tokens[i].startsWith("ADR:")) {
qrVcardModel.setAddress(tokens[i].substring("ADR:".length()));
} else if (tokens[i].startsWith("NOTE:")) {
qrVcardModel.setNote(tokens[i].substring("NOTE:".length()));
} else if (tokens[i].startsWith("SUMMARY:")) {
qrVcardModel.setSummary(tokens[i].substring("SUMMARY:".length()));
} else if (tokens[i].startsWith("DTSTART:")) {
qrVcardModel.setDtstart(tokens[i].substring("DTSTART:".length()));
} else if (tokens[i].startsWith("DTEND:")) {
qrVcardModel.setDtend(tokens[i].substring("DTEND:".length()));
}
}
Intent intentVcard = new Intent(MainActivity.this, VcardActivity.class);
startActivity(intentVcard);
}
我面臨的第二個問題是我在掃描Geoqrcode
時無法打開 Google Maps 應用程序。 這是代碼:
else if (text.startsWith("geo:"))
{
QRGeoModel qrGeoModel = new QRGeoModel();
String delims = "[ , ?q= ]+";
String tokens[] = text.split(delims);
for (int i=0;i<tokens.length;i++)
{
if (tokens[i].startsWith(" geo:"))
{
qrGeoModel.setLat(tokens[i].substring("geo:".length()));
}
}
qrGeoModel.setLat(tokens[0].substring("geo:".length()));
qrGeoModel.setLng(tokens[1]);
qrGeoModel.setGeo_place(tokens[2]);
Uri gmmIntentUri = Uri.parse("qrGeoModel.getLat(),qrGeoModel.getLng()");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
}
你知道我該怎么做這兩個嗎?
您可以像這樣在 Intent 中傳遞值:
intentVcard.putExtra("value_name" , value);
value 可以是 String、int、boolean、long 等等(您可以在 ide 中檢查您可以通過的內容)。
在接收活動中,您可以獲得如下值:
getIntent.getStrinExtra("value_name");
請務必用您的值名稱替換它,對於 String 它是這樣的,但是對於 boolean 它將是:
getIntent.getBooleanExtra("value_name" , defualt_value);
關於谷歌地圖問題,看這一行
Uri gmmIntentUri = Uri.parse("qrGeoModel.getLat(),qrGeoModel.getLng()");
你不需要 " 那里,這樣你將把它作為一個字符串而不是 qrGeoModel.getLat() 的實際值傳遞,這樣寫這一行:
Uri gmmIntentUri = Uri.parse(qrGeoModel.getLat() + "," + qrGeoModel.getLng());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.