Ответ 1
Попробуйте это и посмотрите, пойманы ли какие-либо исключения:
try {
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(this, uri);
}
catch (NullReferenceArgument e) {
Log.d(TAG, "NullReferenceException: " + e.getMessage());
}
catch (IllegalStateException e) {
Log.d(TAG, "IllegalStateException: " + e.getMessage());
}
catch (IOException e) {
Log.d(TAG, "IOException: " + e.getMessage());
}
catch (IllegalArgumentException e) {
Log.d(TAG, "IllegalArgumentException: " + e.getMessage());
}
catch (SecurityException e) {
Log.d(TAG, "SecurityException: " + e.getMessage());
}
Исключенное исключение объяснит, что происходит в вашем создании. Согласно документам, статический метод create просто сокращает то, что находится в блоке try выше. Основное отличие, которое я вижу, это то, что статический метод create не бросает, пока setDataSource делает.