簡體   English   中英

如何為 Vcard 打開新的 Activity 以及如何打開 Google Maps 應用程序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM