Why am I getting this error "Expected resource of type raw" in Android Studio?

12,175

Solution 1

The error occurred because Android Studio expected a resource file of type raw.

Solution 1:

Create a new folder in your "res" folder called "raw", and put your icon there. The raw folder should contain all your media files of your app.

Then replace

InputStream is = getResources().openRawResource(R.drawable.icon);

with

InputStream is = getResources().openRawResource(R.raw.icon);

Solution 2:

Another solution is to do it like this. This doesn't require you to create a raw folder:

InputStream is = getResources().openRawResource(+ R.drawable.icon);

Solution 2

Replace

InputStream is = getResources().openRawResource(R.drawable.icon);

With

InputStream is = getResources().openRawResource(+ R.drawable.icon);

Solution 3

Let's look at documentation for openRawResource

Open a data stream for reading a raw resource. This can only be used with resources whose value is the name of an asset files -- that is, it can be used to open drawable, sound, and raw resources; it will fail on string and color resources.

So the solution - leave it as it is, i. e.

InputStream is = getResources().openRawResource(R.drawable.icon);

The inspection in Android Studio is just wrong. You can add

@SuppressWarnings("ResourceType")

to hide the error.

Note

Using + R.drawable.icon just fools the inspection, because it can no longer determine which kind of resource it is.

Share:
12,175
Missy Zewdie
Author by

Missy Zewdie

Updated on June 09, 2022

Comments

  • Missy Zewdie
    Missy Zewdie almost 2 years

    I was trying to set the default wallpaper by using a button but for some reason when i set the InputStream in the OnCreate Method, i get this error "expected resource of type raw". I am referencing the drawable folder and using the icon.png image which is in the drawable folder. I was following the tutorials in the NewBoston Series and it seems to work fine for Travis but for some reason mine doesnt work in Android Studio. What could be the error? Thanks

    Camera.java:

    package com.example.user.cameraapplication;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Bundle;
    import android.provider.MediaStore;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageButton;
    import android.widget.ImageView;
    import android.widget.Switch;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    /**
     * Created by user on 16-08-2015.
     */
    public class Camera extends Activity implements View.OnClickListener{
    
        ImageView iv;
        Button b1,b2;
        ImageButton img;
        Intent i;
        final static  int cameractivity = 0;
        Bitmap b;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.photo);
            inititalize();
            InputStream is = getResources().openRawResource(R.drawable.icon);
            b = BitmapFactory.decodeStream(is);
        }
    
        private void inititalize() {
            iv = (ImageView)findViewById(R.id.iView1);
            img = (ImageButton)findViewById(R.id.imgbtn);
            b1 = (Button)findViewById(R.id.btn1);
            b2 = (Button)findViewById(R.id.btn2);
    
            b1.setOnClickListener(this);
            b2.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch(v.getId()){
                case R.id.btn1:
                    try {
                        getApplicationContext().setWallpaper(b);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    break;
                case R.id.imgbtn:
                    i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    startActivityForResult(i,cameractivity);
    
                    break;
            }
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if(resultCode==RESULT_OK)
            {
                Bundle extras = data.getExtras();
                b = (Bitmap)extras.get("data");
               iv.setImageBitmap(b);
    
            }
        }
    }
    

    Image:

    Image