Как открыть новую активность для Vcard и как открыть приложение Google Maps? - PullRequest
1 голос
/ 12 апреля 2020

Я делаю приложение для сканирования кода qr и не могу выполнить две вещи. Первый - это передать информацию о Vcard в новую активность. Вот код, который я написал:

@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);

    }

Вторая проблема, с которой я сталкиваюсь, заключается в том, что я не могу открыть приложение Google Maps при сканировании Geoqrcode. Вот код:

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);

}

Вы знаете, как я могу сделать это два?

1 Ответ

0 голосов
/ 12 апреля 2020

Вы можете передавать значения в Intent следующим образом:

intentVcard.putExtra("value_name" , value);

значение может быть String, int, boolean, long и более (вы можете указать в своем идеале, что вы можете передать).

В получающем действии вы можете получить значение, подобное этому:

getIntent.getStrinExtra("value_name");

Обязательно замените его на имя значения, для String оно будет таким, однако для логического значения оно будет:

getIntent.getBooleanExtra("value_name" , defualt_value);

О проблеме с Google Картами, посмотрите на эту строку

 Uri gmmIntentUri = Uri.parse("qrGeoModel.getLat(),qrGeoModel.getLng()");

там вам не нужно ", так что вы передадите все это как строку, а не фактическое значение qrGeoModel .getLat (), insted напишите эту строку так:

Uri gmmIntentUri = Uri.parse(qrGeoModel.getLat() + "," + qrGeoModel.getLng());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...