• 09-04-2023, 16:31:01
    #1
    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?
  • 09-04-2023, 17:05:23
    #2
    Webview'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:28
    #3
    WebilisimNET adlı üyeden alıntı: mesajı görüntüle
    Webview'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.
    Alakanı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.

    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:48
    #4
    Test 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
    #5
    OmerAti adlı üyeden alıntı: mesajı görüntüle
    Test 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();
    }});
    
    }
    
    }
    Çok teşekkür ederim ama hata verdi kodlar. Proje dosyasını iletme imkanınız olabilir mi acaba?
  • 09-04-2023, 21:54:57
    #6
    hata 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:29
    #7
    OmerAti adlı üyeden alıntı: mesajı görüntüle
    hata vermemesi gerek test ettim api 4.1 ve üstü olacak

    yinede iletiyim dosyalari



    https://dosya.co/dtvfju1i1qet/MyApplication3.zip.html
    Ellerinize sağlık. Gezginler üzerinden indiriyor ama bizim siteden indirmiyor.

    İndirmesini istediğimiz şey bu adresteki PDF kaydet Excel'e aktar butonları. https://bilhos.com.tr/sondepremler