درود;
خودم شخصا به این مشکل نخوردم. اما یک بار یکی این مشکل رو داشت ، نتونستم پیدا کنم کجا جوابش رو دادم مشکلش حل شد. هر چی یادم بود رو سرچ زدم، اینجا مینویسم ، امیدوارم کمکت کنه.
تا جایی که یادمه باید داخل DefaultHttpDataSource مقدار allowCrossProtocolRedirects رو true کنی.
شما از setDataSource استفاده کردی، برای این که بتونی allowCrossProtocolRedirects رو true کنی باید از ExtractorMediaSource استفاده کنی.این کدی که از اینترنت گرفتم رو بخون ، کمی کمکت میکنه بتونی allowCrossProtocolRedirects رو true کنی و مشکلت رو حل کنی.
renderersFactory =newDefaultRenderersFactory(getActivity()); bandwidthMeter = new DefaultBandwidthMeter();
trackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
trackSelector = new DefaultTrackSelector(trackSelectionFactory);
loadControl = new DefaultLoadControl();
player = ExoPlayerFactory.newSimpleInstance(renderersFactor y, trackSelector, loadControl);
dataSourceFactory = new DefaultDataSourceFactory(getActivity(), "ExoplayerDemo");
extractorsFactory = new DefaultExtractorsFactory();`
ringtoneAdapter = new RingtoneAdapter1(ringtoneList, getActivity(), player, mediaSource, trackSelectionFactory, dataSourceFactory, extractorsFactory, mainHandler, renderersFactory, bandwidthMeter, loadControl, trackSelector, playeditem, Boolean.valueOf(false));
mediaSource = new ExtractorMediaSource
.Factory(dataSourceFactory)
.setExtractorsFactory(extractorsFactory)
.createMediaSource(Uri.parse(ringtoneList.get(posi tion).getUrl()), mainHandler, null);
player.seekTo(0);
player.setPlayWhenReady(true); player.prepare(mediaSource);
داخل این کدی که نوشته شده به جای DefaultDataSourceFactory از ExtractorMediaSource استفاده کن.و یه Factory سفارشی برای خودت درست کن و allowCrossProtocolRedirects رو true قرار بده. فقط تو Constructor مربوط به DefaultDataSource باید اینطوری استفاده کنی
DefaultDataSource(Context context, String userAgent, boolean allowCrossProtocolRedirects)