package fr.svpro.radiomercure; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import android.Manifest; import android.app.Activity; import android.app.DownloadManager; import android.content.ActivityNotFoundException; import android.content.Intent; import android.content.pm.PackageManager; import android.media.AudioManager; import android.media.MediaPlayer; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.webkit.CookieManager; import android.webkit.DownloadListener; import android.webkit.URLUtil; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; import java.io.IOException; public class MainActivity extends AppCompatActivity { private static final int WRITE_EXTERNAL_STORAGE_RC = 100; private WebView web; private String url, userAgent, contentDisposition, mimeType; private Menu menu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.getSupportActionBar().setTitle(R.string.app_title); web = findViewById(R.id.wv); web.loadUrl("https://www.radiomercure.fr"); web.getSettings().setJavaScriptEnabled(true); web.getSettings().setAllowFileAccess(true); web.getSettings().setAllowFileAccessFromFileURLs(true); web.getSettings().setAllowUniversalAccessFromFileURLs(true); web.getSettings().setAppCacheEnabled(true); web.getSettings().setDatabaseEnabled(true); web.getSettings().setDomStorageEnabled(true); web.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); web.getSettings().setAppCachePath(web.getContext().getCacheDir().getAbsolutePath()); web.getSettings().setUseWideViewPort(true); web.getSettings().setLoadWithOverviewMode(true); web.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { web.getSettings().setAllowFileAccessFromFileURLs(true); } web.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) { MainActivity.this.url = url; MainActivity.this.userAgent = userAgent; MainActivity.this.contentDisposition = contentDisposition; MainActivity.this.mimeType = mimeType; String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE; if (ActivityCompat.checkSelfPermission(MainActivity.this, permission) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_STORAGE_RC); } else { TelechargemntPodcast(); } } }); } private void TelechargemntPodcast() { DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); request.setMimeType(mimeType); //------------------------COOKIE!!------------------------ String cookies = CookieManager.getInstance().getCookie(url); request.addRequestHeader("cookie", cookies); //------------------------COOKIE!!------------------------ request.addRequestHeader("User-Agent", userAgent); request.setDescription("Téléchargement..."); request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimeType)); request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); String fileName = URLUtil.guessFileName(url, contentDisposition, mimeType); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName); DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); dm.enqueue(request); Toast.makeText(getApplicationContext(), "Téléchargement de " + URLUtil.guessFileName(url, contentDisposition, mimeType), Toast.LENGTH_LONG).show(); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == WRITE_EXTERNAL_STORAGE_RC) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { TelechargemntPodcast(); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.option,menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { int id = item.getItemId(); switch (id){ case R.id.refresh: web.clearCache(true); web.reload(); Toast.makeText(this, "Rechargement...", Toast.LENGTH_SHORT).show(); return true; case R.id.exit: System.exit(0); return true; default: return super.onOptionsItemSelected(item); } } @Override public void onBackPressed() { if (web.canGoBack()) { web.goBack(); } else { super.onBackPressed(); System.exit(0); } } }