# App funktioniert auf Android 5, auf 6 nicht



## Java xyrse123 (30. Jun 2018)

Hallo,
ich wollte eine MP3-Player App machen. Ich habe die (noch) nicht fertige App auf meinem Handy mit Android 5 getestet und konnte auch Musik abspielen. Auf einem Handy mit Android 6 schließt sich die App nach dem Öffnen sofort wieder ( Meistens kommt ja sowas wie "App reagiert nicht", ist hier aber nicht der Fall).


```
import android.content.ContentResolver;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    private List<String> list;
    private ContentResolver cr;
    private List<Song> songList = new ArrayList<Song>();
    private MediaPlayer mediaPlayer = new MediaPlayer();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cr = getContentResolver();
        list = new ArrayList<String>();
        listView = findViewById(R.id.listView);

        getAudioFiles(cr);
        createListView();
    }

    private void getAudioFiles(ContentResolver cr) {
        String[] protection = {MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.YEAR,
                MediaStore.Audio.Media.TRACK, MediaStore.Audio.Media.SIZE, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media._ID};

        Cursor c = cr.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, protection, null, null, null);

        if(c!=null) {

            while(c.moveToNext()) {

                String title = c.getString(0);
                String interpret = c.getString(1);
                String album = c.getString(2);
                int year = c.getInt(3);
                int track = c.getInt(4);
                int trackSize = c.getInt(5);
                String path =c.getString(6);
                Song s = new Song(title,interpret, album, year, track, trackSize, path);

                songList.add(s);
            }
        }
    }

    private void createListView() {

for(Song s: songList) {
    list.add(s.toString());
}
        listView.setAdapter(new ArrayAdapter<String>(this,R.layout.activity_main, R.id.textView,list));
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

         @Override
         public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

             if(mediaPlayer.isPlaying()) {
                 mediaPlayer.stop();
                 mediaPlayer.release();
                 mediaPlayer = new MediaPlayer();
             }

                 String s = (String) listView.getItemAtPosition(position);

             int index = 0;
                 int tmp = 0;

                 for (int i = 0; i < s.length(); i++) {
                     index = index + 1;
                     char c = s.charAt(i);

                     if (c == '/') {
                         tmp = index;
                         break;
                     }
                 }

                 String sub = s.substring(tmp - 1, s.length() - 1);
                 Toast to = Toast.makeText(getBaseContext(), "" + sub, Toast.LENGTH_LONG);
                 to.show();
                 try {
                     mediaPlayer.setDataSource(sub);
                     mediaPlayer.prepare();
                     mediaPlayer.start();

                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
     });
    }

}
```

Die Fehlermeldung auf Handy mit Android 6:



Spoiler: Fehlermeldung



W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate
--boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=generic --instruction-set-features=default
--dex-file=/data/app/com.example.admin.mp3player-1/split_lib_dependencies_apk.apk --oat-file=/data/dalvik-cache/arm64/data@app@com.example.admin.mp3player-1@split_lib_dependencies_apk.apk@classes.dex)
because non-0 exit status



Woran liegt das? Fehlen bei Android 6 noch irgendwelche Berechtigungen?
Danke im Vorraus.


----------



## Java xyrse123 (30. Jun 2018)

Ich glaube es hat sich erledigt. Ich musste der App in den Handy Einstellungen noch die Berechtigung geben. Dabei dachte ich es würde im Manifest ausreichen.


----------



## looparda (1. Jul 2018)

Du solltest in der App die Berechtigung einholen: https://developer.android.com/training/permissions/requesting


----------

