How to enable download in webview in Sketchware apps?

How to enable download in an app created with Sketchware?

Suppose you have created an app in Sketchware which uses webview to open a site. You can seamlessly explore the site in your app. But the download links in the webview field do not work.

But it is possible to make it work by exporting the source code. You can edit the code in either Android studio or Eclipse to add your desired features and then recompile it. I tried to do that but soon realized that setting up environment for development of Android app is not easy for a naive like me. But it can be done by code injection or by using another mobile app called Anacode.

Enabling download from webview in Sketchware using add source directly block.

1. In VIEW area of your app insert a WebView (webview1).

2. In LOGIC area, in onCreate event, add an add source directly block. In this block add the following code:
webview1.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity (intent);
}
});

3. After this add webview loadUrl block and write the url you intend to load in webview.



Adding​ code using Anacode App.

You need two apps to do this: Sketchware and Anacode.

Step 1
Start a New project in Sketchware (e.g. package name com.abc). Insert webview in your View field and set webview to load your URL.

Step 2
Now save the project, run and install it. Then export source code and save it on your mobile.

Step 3
The exported source code is in a zip file. When it is decompressed following folders are seen:

* app
      /src
          /main
                /java
                     /com/abc/MainActivity.java
                                     /....java
                /res
                     /drawable/
                     /drawable-xhdpi/
                     /layout/main.xml
                     /raw/
                     /values/
                     /values-v21/
                /AndroidManifest.xml

      /build.gradle
* build.gradle
* settings.gradle

(files and folders in red are to be copied)

Step 4
Now open Anacode and start a new Android project. (e.g. project name: newproject, and package name: com.abc, created in root folder)

Note: Package name should be same as the package name in your Sketchware project.

Step 5
You'll see newprojectActivity.java open in Anacode. Now close Anacode and browse your file manager to find the folder with your project name. The folder may look as shown below:

*newproject
      /assets/
      /bin/
      /gen/
      /libs/
      /res/
      /src/com/abc/newprojectActivity.java
      /AndroidManifest.xml
      /proguard.cfg

(files and folders in red are to be replaced with corresponding files and folders in Sketchware project, or to be deleted)

Step 6
Now go to decompressed folder of your Sketchware project and copy 'AndroidManifest.xml' and 'res' folder and paste it in your Anacode project folder such that it replaces all files with similar names.

Step 7
Copy 'MainActivity.java' and all other Java files in that folder in Sketchware project and paste them in the same folder as newprojectActivity.java. Now delete
'newprojectActivity.java'.

Step 8
Start Anacode, open MainActivity.java and copy the following code after webview loadUrl in onCreate method:


webview1.setDownloadListener(new DownloadListener() {
        public void onDownloadStart(String url, String userAgent,
                String contentDisposition, String mimetype,
                long contentLength) {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(url));
            startActivity(intent);
        }
    });



(Note: 'webview1' is name of the webview and it should be same as the name of webview in Sketchware project.)

Step 9
Save it and run the project. Your app can now open download links from webview field in Google chrome or any other browser in your mobile.


Enable download without code Injection
To enable download in Sketchware without using any code or without using Anacode app, visit this page:
http://www.sketchwarehelp.com/2017/08/enable-download-from-webview-in.html


For how to enable upload from webview in Sketchware, visit the link below:
http://www.sketchwarehelp.com/2017/10/how-to-enable-upload-from-webview-in.html

Comments

  1. With this encoding will I be able to download it internally with my browser?

    ReplyDelete
  2. 1. Now code Injection is not possible in Sketchware.

    2. With this code, download link will open in any app in your mobile which has download mananager, e.g. Google Chrome, UC browser, etc.

    ReplyDelete
  3. Replies
    1. There is an option to export source code in Sketchware, in project options. It is paid feature now.

      Delete
  4. How to add source direckly
    Code Set string to yes/no

    ReplyDelete
  5. why I can't paste code, in add source directly? please help me...

    ReplyDelete
  6. How can i save image by long press please..

    ReplyDelete

Post a Comment

Popular posts from this blog

A Flash Light App in Sketchware

Create Music Player app in Sketchware

In Sketchware: How to create a calculator for any simple formula?

Simple car racing android game in Sketchware

Firebase auth in Sketchware for Login Activity