如何在服务中使用strings.xml文件?

时间:2012-03-10 22:21:35

标签: android service

我的应用程序中有一项服务,我可以访问包含我需要的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 个答案:

答案 0 :(得分:3)

你正在接受Android服务吗?从您的代码片段看起来您想要从AsyncTask访问字符串。

对于常规Android服务,您可以使用getString()中的Context方法,因为Service扩展了Context。只需传入所需字符串的资源ID,就可以全部设置。

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

为了从AsyncTask访问字符串,我通常只将ApplicationContext传递给AsyncTask,然后我可以访问我想要的任何内容。请记住,传递上下文可能会有问题,因此您可能希望将实际字符串传递给AsyncTask,因此不需要Context引用。