Android, как получить доступ к исходным ресурсам, которые я установил в папку res? - программирование
Подтвердить что ты не робот

Android, как получить доступ к исходным ресурсам, которые я установил в папку res?

В J2ME я делаю это вот так: getClass().getResourceAsStream("/raw_resources.dat");

Но в android я всегда получаю null на этом, почему?

4b9b3361

Ответ 1

InputStream raw = context.getAssets().open("filename.ext");

Reader is = new BufferedReader(new InputStreamReader(raw, "UTF8"));

Ответ 2

Для сырых файлов вам следует рассмотреть возможность создания необработанной папки внутри каталога res, а затем вызвать getResources().openRawResource(resourceName) из вашей активности.

Ответ 3

В некоторых ситуациях нам нужно получить изображение из рисованной или необработанной папки, используя вместо этого имя изображения, если сгенерированный id

// Image View Object 
        mIv = (ImageView) findViewById(R.id.xidIma);
// create context Object for  to Fetch  image from resourse 
Context mContext=getApplicationContext();

// getResources().getIdentifier("image_name","res_folder_name", package_name);

// find out below example 
    int i = mContext.getResources().getIdentifier("ic_launcher","raw", mContext.getPackageName());

// now we will get contsant id for that image       
        mIv.setBackgroundResource(i);

Ответ 4

TextView txtvw = (TextView)findViewById(R.id.TextView01);
        txtvw.setText(readTxt());

 private String readTxt()
    {
    InputStream raw = getResources().openRawResource(R.raw.hello);

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    int i;
    try
    {
        i = raw.read();
        while (i != -1)
        {
            byteArrayOutputStream.write(i);
            i = raw.read();
        }
        raw.close();
    }
    catch (IOException e)
    {
        // TODO Auto-generated catch block

        e.printStackTrace();
    }


    return byteArrayOutputStream.toString();

}

TextView01:: txtview в linearlayout hello::.txt файл в папке res/raw (u может получить доступ к любой папке othr как обычно)

Ist 2 строки 2 написаны в методе onCreate()

rest должен быть записан в классе, расширяющем Activity!!

Ответ 5

getClass().getResourcesAsStream() отлично работает на Android. Просто убедитесь, что файл, который вы пытаетесь открыть, правильно встроен в ваш APK (откройте APK как ZIP).

Обычно на Android вы помещаете такие файлы в каталог assets. Поэтому, если вы поместите raw_resources.dat в подкаталог assets вашего проекта, он окажется в каталоге assets в APK, и вы можете использовать:

getClass().getResourcesAsStream("/assets/raw_resources.dat");

Также можно настроить процесс сборки, чтобы файл не попадал в каталог assets в APK.

Ответ 6

InputStream in = getResources(). openRawResource (имя ресурса);

Это будет работать правильно. До этого вам нужно создать файл/текстовый файл xml в raw-ресурсе. Тогда он будет доступен.

Изменить. Несколько раз com.andriod.R будет импортироваться, если в файле макета или имени изображения есть ошибка. Поэтому вам нужно правильно импортировать пакет, тогда будет доступен только исходный файл.

Ответ 7

В предварительном подходе используется функция расширения Kotlin

fun Context.getRawInput(@RawRes resourceId: Int): InputStream {
    return resources.openRawResource(resourceId)
}

Еще одна интересная вещь - использование функции расширения, которая определена в Closeable scope

Например, вы можете работать с потоком ввода элегантным способом без обработки исключений и управления памятью

fun Context.readRaw(@RawRes resourceId: Int): String {
    return resources.openRawResource(resourceId).bufferedReader(Charsets.UTF_8).use { it.readText() }
}