как использовать файл strings.xml в сервисе? - PullRequest
1 голос
/ 11 марта 2012

У меня есть служба в моем приложении, и я хочу получить доступ к файлу strings.xml, который содержит то, что мне нужно.

Я хочу получить строку, которая находится в strings.xml, но я могуДоступ к этому файлу в моем сервисе.

Я думаю, что проблема связана с контекстом, но я не могу решить его.

Вот выдержка из моего сервиса:

package com.receiver;

protected Void doInBackground() {

    // GPS timeout
    final int maxSeconds = 60; //30
    int count = 0;

    // If we've finished finding location or exceeded timeout,
    // break the loop.
    while (findingLocation && count < maxSeconds) {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // Continue if interrupted
        }
        // Increment the timer by one second
        count++;
    }

    // If we're still finding location, switch to network locations.
    if (findingLocation) {
        locationHandler.sendMessage(new Message());
        locationManager.removeUpdates(SMSReceiver.this);
        lat = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER).getLatitude();
        lng = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER).getLongitude();
        msg = "";// here I whant to get my string from the strings.xml but I can't access to this file
    } else {
        lat = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER).getLatitude();
        lng = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER).getLongitude();
        msg = " "; // here I whant to get other string from the strings.xml but I can't access to this file
}

Спасибо за вашу помощь.

Извините за мой плохой английский.

1 Ответ

3 голосов
/ 11 марта 2012

Вы пользуетесь сервисом Android? Из вашего фрагмента кода похоже, что вы хотите получить доступ к строке из AsyncTask.

Для обычной службы Android вы можете использовать метод getString() из Context, поскольку Service расширяет Context. Просто передайте идентификатор ресурса нужной вам строки, и все будет готово.

http://developer.android.com/reference/android/content/Context.html#getString(int)

Чтобы получить доступ к строке из AsyncTask, я обычно просто передаю ApplicationContext в AsyncTask, затем я могу получить доступ ко всему, что захочу. Имейте в виду, что передача контекста может быть проблематичной, поэтому вам может понадобиться передать фактическую строку в AsyncTask, поэтому для нее не требуется ссылка Context.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...