Merhabalar kıymetli arkadaşlar
Android Studio'da web view ile bir web sayfasını çağırıyoruz. Sayfa açılıyor sorunsuz. Fakat çağırılan sayfada Blob indirme yapan sayfadaki verileri dışa aktaran butonlar var. Bu butonların indirme işlemi uygulama içinde çalışmıyor.
Örnek bir kod veya proje dosyası gönderir misiniz?
Webview Projesinde Blob dosya indirme
6
●174
- 09-04-2023, 17:05:23Webview'da download yapabilmen için önce webview için download kütüphanesini tanıtmalısın. örnek:
webview.setDownloadListener(new DownloadListener() { public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Uri webpage = Uri.parse(url); DownloadManager.Request request = new DownloadManager.Request(webpage); request.setMimeType(mimetype); String cookies = CookieManager.getInstance().getCookie(url); request.addRequestHeader("cookie", cookies); request.addRequestHeader("User-Agent", userAgent); request.setDescription("Downloading file..."); request.setTitle(URLUtil.guessFileName(url, contentDisposition,mimetype)); request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setDestinationInExternalFilesDir(MainActivity.this,Environment.DIRECTORY_DOWNLOADS,".pdf"); DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); dm.enqueue(request); Toast.makeText(getApplicationContext(), "Downloading File",Toast.LENGTH_LONG).show(); } });manifest dosyasına izinleri eklemeyi unutma. Kodu kendine göre dizayn edebilirsin. - 09-04-2023, 17:09:28Alakanız için çok teşekkür ederim. İnternet ve dosya erişim izni tanıdım. Kodlarım da aşağıdaki gibi ama yine de çalışmıyor.WebilisimNET adlı üyeden alıntı: mesajı görüntüle
package com.bilhos.mobilsandiktakip; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import android.Manifest; import android.app.DownloadManager; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.webkit.CookieManager; import android.webkit.DownloadListener; import android.webkit.URLUtil; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private static final int PERMISSIONS_REQUEST_CODE = 100; private static final String PERMISSIONS_STORAGE = Manifest.permission.WRITE_EXTERNAL_STORAGE; private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = findViewById(R.id.web); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient()); webView.loadUrl("https://bilhos.com.tr/"); // Check permission for storage if (ContextCompat.checkSelfPermission(this, PERMISSIONS_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{PERMISSIONS_STORAGE}, PERMISSIONS_REQUEST_CODE); } // Set download listener to enable downloading from WebView webView.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { 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("Downloading file..."); request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimetype)); request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(url, contentDisposition, mimetype)); DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); dm.enqueue(request); Toast.makeText(getApplicationContext(), "Downloading File", Toast.LENGTH_LONG).show(); } }); } // Handle permission request result @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == PERMISSIONS_REQUEST_CODE) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // Permission granted } else { // Permission denied Toast.makeText(this, "Permission denied. App cannot download files.", Toast.LENGTH_SHORT).show(); } } } } - 09-04-2023, 20:48:48Test edildi cihazin indirme yöneticisini açarak indirme sağlıyor
kodunuzu güncelledim ve bir kaç ayar ekledim
AndroidManifest eklecenek
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
activity_main.xml eklenecek
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <WebView android:id="@+id/web_view" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>MainActivity
public class MainActivity extends AppCompatActivity { WebView webView; String url = "https://bilhos.com.tr/ "; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //İndirme dosyalarını kaydetmek için Çalışma Zamanı Harici depolama izni if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) { Log.d("permission", "permission denied to WRITE_EXTERNAL_STORAGE - requesting it"); String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE}; requestPermissions(permissions, 1); } } webView = findViewById(R.id.web_view); webView.setWebViewClient(new WebViewClient()); webView.getSettings().setLoadsImagesAutomatically(true); webView.getSettings().setJavaScriptEnabled(true); webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); webView.loadUrl(url); //handle downloading webView.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) { DownloadManager.Request request = new DownloadManager.Request( Uri.parse(url)); request.setMimeType(mimeType); String cookies = CookieManager.getInstance().getCookie(url); request.addRequestHeader("cookie", cookies); request.addRequestHeader("User-Agent", userAgent); request.setDescription("Downloading File..."); request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimeType)); request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setDestinationInExternalPublicDir( Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName( url, contentDisposition, mimeType)); DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); dm.enqueue(request); Toast.makeText(getApplicationContext(), "Dosya indiriliyor ", Toast.LENGTH_LONG).show(); }}); } } - 09-04-2023, 21:51:18Çok teşekkür ederim ama hata verdi kodlar. Proje dosyasını iletme imkanınız olabilir mi acaba?OmerAti adlı üyeden alıntı: mesajı görüntüle
- 09-04-2023, 21:54:57hata vermemesi gerek test ettim api 4.1 ve üstü olacak
yinede iletiyim dosyalari
https://dosya.co/dtvfju1i1qet/MyApplication3.zip.html - 09-04-2023, 22:40:29Ellerinize sağlık. Gezginler üzerinden indiriyor ama bizim siteden indirmiyor.OmerAti adlı üyeden alıntı: mesajı görüntüle
İndirmesini istediğimiz şey bu adresteki PDF kaydet Excel'e aktar butonları. https://bilhos.com.tr/sondepremler