Что касается папки с ресурсами и переменных среды на Android

Мой код читает

package com.fyp.jwi;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import edu.mit.jwi.Dictionary;
import edu.mit.jwi.IDictionary;
import edu.mit.jwi.item.IIndexWord;
import edu.mit.jwi.item.IWord;
import edu.mit.jwi.item.IWordID;
import edu.mit.jwi.item.POS;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ---->  String wnhome = "file:///android_asset/";   <----
     String path = wnhome + File.separator + " dict ";
     URL url = null;
     try{ url = new URL("file", null, path); } 
          catch(MalformedURLException e){ try {
            e.printStackTrace();
        } catch (Exception e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } }
          if(url == null) return;

     // construct the dictionary object and open it
     IDictionary dict = new Dictionary ( url);
     try {
        dict.open ();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

     // look up first sense of the word "dog "
     IIndexWord idxWord = dict . getIndexWord ("dog", POS. NOUN );
     IWordID wordID = idxWord . getWordIDs ().get (0) ;
     IWord word = dict . getWord ( wordID );
     System .out . println ("Id = " + wordID );
     System .out . println (" Lemma = " + word . getLemma ());
     System .out . println (" Gloss = " + word . getSynset (). getGloss ());
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

Код, который я выделил с помощью '-->', изначально

String wnhome = System.getenv("WNHOME");

Где WNHOME — это переменная среды, которая ссылается на каталог, в котором на вашем компьютере расположены определенные файлы, помогающие Java wordnet API. Это отлично работает, когда я компилирую код. Мне нужна отдельная программа Java на моем компьютере.

Я прикрепил изображение, чтобы было понятнее введите здесь описание изображения

Теперь я знаю, как устанавливать и использовать переменные среды в Windows. Как это сделать на андроиде? И правильно ли я связываю эти файлы? Есть ли другой способ сделать это?

ИЛИ есть ли обходной путь, который не требует установки переменной среды? Кто-нибудь знаком с этим или JWI поможет мне?


person Srini    schedule 08.02.2014    source источник
comment
в вашем коде --› wnhome + File.separator ‹-- но в конце wnhome уже есть разделитель файлов   -  person Pararth    schedule 08.02.2014
comment
так вы говорите, что я должен удалить '/' в конце файла:///android_asset/?   -  person Srini    schedule 08.02.2014
comment
В Android есть концепция переменных среды, но они вряд ли вам помогут, поскольку переменная среды на устройстве Android, указывающая на местоположение на вашем компьютере для разработки, будет бесполезной, поскольку вы не сможете получить доступ к этому хранилищу оттуда. Создайте интересующие файлы в APK или поместите их в хранилище устройства и сообщите приложению об их местонахождении более похожим на Java способом.   -  person Chris Stratton    schedule 08.02.2014
comment
да .. или удалите + File.separator в следующей строке   -  person Pararth    schedule 08.02.2014
comment
@ChrisStratton какой-нибудь совет, как это сделать? я должен добавить папку dict на SD-карту, а затем добавить разрешение на чтение хранилища в манифесте?   -  person Srini    schedule 08.02.2014
comment
@ user2450263, который все еще вызывает сбой моего приложения :(   -  person Srini    schedule 08.02.2014
comment
Либо активы, либо внешнее хранилище — это общая возможность с различными компромиссами. Но от использования переменной среды мало пользы, так как ваше приложение должно будет установить ее, а также прочитать (как сторонний разработчик, вы не сможете установить предустановленные переменные среды, которые ваше приложение наследует от zygote )   -  person Chris Stratton    schedule 08.02.2014
comment
так что текущий способ, которым я пользуюсь для ссылки на папку с ресурсами, правильный ?? файлы данных в папке с ресурсами теперь будут связаны с apk?   -  person Srini    schedule 08.02.2014
comment
@SrinivasSuresh Вам удалось загрузить файлы WordNet в Android?   -  person almightyGOSU    schedule 07.02.2016
comment
Нет, я научился парсить веб-страницы и написал API для парсинга wordnet. github.com/thewickedaxe/WonetLib . Я умоляю вас и умоляю вас не использовать это из коробки. Я написал это, когда только изучал java, поэтому качество кода дерьмовое. Но это работает   -  person Srini    schedule 17.02.2016