0

Everyone. Good morning.

This is a android widget. I'm using this code. I just wanted to get the ArrayList from a external file as .TXT (saved in assets Folder) instead of getting quotes' list from the java file. But there is something wrong in this code. It isn't reading the "quote.txt" file that is in "assets folder".

This is my code:

   public class UpdateWidgetService extends Service {
private static final String TAG = UpdateWidgetService.class.getSimpleName();

@Override
public IBinder onBind(Intent arg0) {
    return null;
}

@Override
public void onStart(Intent intent, int startId) {
    super.onStart(intent, startId);

    Log.d(TAG, "onStart started");

    // Create some random data
    Random random = new Random();

    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this.getApplicationContext());

    int[] appWidgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);

    if (appWidgetIds.length > 0) {

        for (int widgetId : appWidgetIds) {
            List<String> qList = getListFromTxtFile("quote.txt");
            int nextInt = random.nextInt(qList.size());

            RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.widget);
            remoteViews.setTextViewText(R.id.widget_textview, qList.get(nextInt));
            appWidgetManager.updateAppWidget(widgetId, remoteViews);
        }
        stopSelf();
    }
    super.onStart(intent, startId);
}

public List<String> getListFromTxtFile(String txtFileName){

//  File sdcard = Environment.getExternalStorageDirectory();
// Get the text file
// File file = new File(sdcard,txtFileName);

AssetManager am = this.getAssets();

List<String> qList = new ArrayList<String>();

//Read text from file

try {
    InputStream is = am.open("quote.txt");
          //BufferedReader br = new BufferedReader(new FileReader(file));
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    String line;

     // get data in text file line by line
    while ((line = br.readLine()) != null) {

       qList.add(line);
    }
}
catch (IOException e) {
    //You'll need to add proper error handling here
}
return qList;

}
}
4

2 回答 2

0

我把这段代码放在哪里,Ics?在“尝试{”内

于 2013-03-12T01:38:19.720 回答
0

尝试使用

   AssetFileDescriptor descriptor = getAssets().openFd("quote.txt");
   FileReader reader = new FileReader(descriptor.getFileDescriptor());
于 2013-03-11T11:29:26.127 回答