ImageView mit einem Bild von der SD Karte füllen

Alex/89

Mitglied
Hallo zusammen,

kann mir bitte jemand helfen?🙁

ich versuche schon seit 2 Tagen ein Bild von meiner SD Karte auf einem ImageView anzeigen zu lassen.
leider tut sich da nichts.




Java:
public class MainActivity extends AppCompatActivity  {




    private File file1;
    private Bitmap bitmap;
   

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






    }
    public void btnClick1(View v){
        ImageView imageView = (ImageView) findViewById(R.id.imageView);
        file1 = new File("sdcard/bild1.jpg");
        imageView.setImageURI(Uri.fromFile(file1));
        Toast.makeText(this, "File geaden!", Toast.LENGTH_SHORT).show();
    }
    public void btnClick2(View v){
        ImageView imageView2 = (ImageView) findViewById(R.id.imageView2);
        bitmap = BitmapFactory.decodeFile("/sdcard/bild1.jpg");
        imageView2.setImageBitmap(bitmap);
        Toast.makeText(this, "bitmap geladen!", Toast.LENGTH_SHORT).show();


    }
    public void btnClick3(View v){
        ImageView imageView3 = (ImageView) findViewById(R.id.imageView3);
        String photoPath = Environment.getExternalStorageDirectory()+"/sdcard/bild1.jpg";
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        Bitmap bitmap2 = BitmapFactory.decodeFile(photoPath, options);

        imageView3.setImageBitmap(bitmap2);
        Toast.makeText(this, "bitmap2 geladen!", Toast.LENGTH_SHORT).show();


    }


}


meine AndroidManifest

Java:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.braue.myapplication22">


    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />



                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


Danke schon mal!🙂
 
Code:
07-25 16:52:00.459 17199-17199/com.example.braue.myapplication22 E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/sdcard/bild1.jpg: open failed: EACCES (Permission denied)
07-25 16:52:00.569 17199-17199/com.example.braue.myapplication22 W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
07-25 16:52:02.229 331-1208/? E/NetlinkEvent: NetlinkEvent::FindParam(): Parameter 'LABEL' not found
07-25 16:52:02.229 331-1208/? E/NetlinkEvent: NetlinkEvent::FindParam(): Parameter 'TIME_NS' not found
07-25 16:52:02.229 331-1208/? E/NetlinkEvent: NetlinkEvent::FindParam(): Parameter 'UID' not found
07-25 16:52:03.039 17199-17199/com.example.braue.myapplication22 E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /sdcard/bild1.jpg: open failed: EACCES (Permission denied)
07-25 16:52:03.109 17199-17199/com.example.braue.myapplication22 W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
07-25 16:52:10.529 17199-17199/com.example.braue.myapplication22 W/ImageView: Unable to open content: file:///storage/emulated/0/sdcard/bild1.jpg
                                                                              java.io.FileNotFoundException: /storage/emulated/0/sdcard/bild1.jpg: open failed: EACCES (Permission denied)


das bekomme ich, wenn ich die einzelnen Buttons drücke.
 
Die Fehlermeldung scheint ja an der Permission zu liegen. Ich könnte mir vorstellen, dass du die Permission wie man sieht zwar im Manifest eingebunden hast, aber die Read und Write Permission sind "gefährliche" Permissions die nochmals während des Laufens der App gegeben werden müssen. Unter Runtime Permission solltest du fündig werden. Mehr zu gefährlichen und normalen Permissions hier: https://developer.android.com/guide/topics/permissions/requesting.html#normal-dangerous

Code müsste in etwa so aussehen (ungetestet):
Code:
// direkt unter die Klasse
    private static final int REQUEST_EXTERNAL_STORAGE = 2;

private static String[] PERMISSIONS_STORAGE = {
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
    };

//in on Create

        verifyStoragePermissions(this);

//Methode

    public static void verifyStoragePermissions(Activity activity) {
        int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (permission != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(
                    activity,
                    PERMISSIONS_STORAGE,
                    REQUEST_EXTERNAL_STORAGE
            );
        }
    }
 

Neue Themen


Zurück
Oben