Skip to main content

How to enable download in webview in Sketchware apps?

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.

Comments

Popular posts from this blog

Create Music Player app in Sketchware

To create a Music Player app in sketchware, follow the steps given below. 1. Create a new project in Sketchware. 2. In VIEW area on main.xml, add a ListView  listview1  with height wrap_content, and weight 1. Add a SeekBar  seekbar1 , an ImageView  imageview1 , and three TextViews  textview1 ,  textview2 , and  textview3 , as shown in the image below. 3. Create a CustomView  mycustom.xml  and add a TextView  textview1 , and an ImageView  imageview1  in it. For listview1 select mycustom.xml as it's customView. 4. Add a MediaPlayer component  mp , a Shared Preferences component  sp:sp  and a Timer component  timer . 5. Create six More Blocks  MPcreate(pos), MPstart , and  MPpause  for the MediaPlayer and  searchFolders ,  getFileList in [filePath]  and  extra . 6. Add three number variables  n, r  and  songPosition , and five String variables  currentfile ...

Admob rewarded video Ads in Sketchware

To integrate Admob Rewarded Video Ads to a Sketchware project, follow the steps given below. Prerequisites An Android project (Sketchware project) Account in Admob Always place the test ad unit ID before placing your ad unit ID. App ID and ad unit ID can be obtained by registering the app on Admob. But for using test ads no registration is required. Do not click on your own Ads. 1. Create an android project in Sketchware. 2. Add the app to your Admob account. For your app, generate an ad unit ID for Rewarded Video Ads. 3. In Sketchware project, navigate to  Library Manager  and open Admob settings. i. Click on Add manually and add the ad unit ID generated on Admob website, or use test ad unit ID ca-app-pub-3940256099942544/5224354917. ii. If you are not using any banner or interstitial ad units, select the same ad unit ID for both banner and interstitial ads. iii. Add Test Device automatically shown by Sketchware. iv. Save it. v. Switch ON Admob and AppCompat and design. ...

Firebase auth in Sketchware for Login Activity

To create a login activity using Firebase Auth in Sketchware, follow the steps given below. This method uses Firebase authentication service for creating login. 1. In your Firebase account, go to Firebase authentication. 2. In Firebase authentication web set-up, go to SIGN-IN method, and enable Email/password and Anonymous. 3. Go to Project settings in your Firebase project and copy the Web API Key, Project ID, and App ID. 4. Paste the Project ID, App ID, and Web API Key in your project in Sketchware, in the Firebase settings. 5. On the  MainActivity  page add a File Shared preferences component  user:user  and an Intent  i . Also add a Timer  t  and a Firebase Auth  testlogin . 6. Create a new page  login.xml  with Activity called  LoginActivity . 7. In  onCreate  event of MainActivity use blocks as shown in image below. It identifies main page with  File user key page . It also checks if user is logged in to  F...