- URL encoding in Android
- 7 Answers 7
- How do I view source code in an Android web browser?
- 13 Answers 13
- 9 Android WebView Examples In Kotlin & Java
- Download Source Code – Kotlin & Java
- What is Android WebView?
- WebView to Android System Webview – implementation history
- How to add WebView to your layout?
- How To Create WebView Programmatically In Android?
- Load Url – WebView Android Example In Kotlin & Java
- How to force open links in webview?
- How to open link in the external browser using Android WebView
- public boolean shouldOverrideUrlLoading (WebView view,WebResourceRequest request)
- How To Play YouTube Video In WebView By Enabling JavaScript In Android
- Android WebView local file example
- loadUrl() uses
- ERR_UNKNOWN_URL_SCHEME in Android WebView – Fixed.
- What is URL SHEME?
- demo.html
- WebView loadData() example in Android
- WebView loadDataWithBaseURL() example in Android
- Android WebView Download File example
- How To Run JavScript In Android WebView
- JavaScript calling Kotlin/Java
- Kotlin/Java calling JavaScript
- sample.html
- MainActivity.kt
- how above code works?
- WebView evaluateJavascript example in Android
- sample.html
- MainActivity.kt
- Android WebView Browser example – Progress bar included
- Step 1
- Step 2
- Step 3
- Step 4
- Step 5
- Step 6
- Step 7
- Step 8
- Step 9
- Step 10
- Step 11
- Conclusion
URL encoding in Android
How do you encode a URL in Android?
I thought it was like this:
If I do the above, the http:// in urlAsString is replaced by http%3A%2F%2F in encodedURL and then I get a java.net.MalformedURLException when I use the URL.
7 Answers 7
You don’t encode the entire URL, only parts of it that come from «unreliable sources».
Alternatively, you can use Strings.urlEncode(String str) of DroidParts that doesn’t throw checked exceptions.
Or use something like
I’m going to add one suggestion here. You can do this which avoids having to get any external libraries.
Give this a try:
You can see that in this particular URL, I need to have those spaces encoded so that I can use it for a request.
This takes advantage of a couple features available to you in Android classes. First, the URL class can break a url into its proper components so there is no need for you to do any string search/replace work. Secondly, this approach takes advantage of the URI class feature of properly escaping components when you construct a URI via components rather than from a single string.
The beauty of this approach is that you can take any valid url string and have it work without needing any special knowledge of it yourself.
Источник
How do I view source code in an Android web browser?
Is there a way to view the source HTML in an Android web browser?
13 Answers 13
You can use Javascript’s alert method to return the source code, type this in the address bar:
In Firefox or Chrome on Android it’s possible to view source by prefixing the URL in the address bar with » view-source: «, i.e. » view-source:http://google.com «.
Look for an app called View Web Source in the market and install it.
Then when browsing, open your menu and tap «share», in the list that pops up choose View Web Source.
The app mentioned in this answer hasn’t been updated since 2009.
You might want to try VT View Source.
Another tool that is useful for viewing source AND modifying them live, in Firebug/Web Inspector-like manner, is the weinre remote debugger.
Create a new bookmark (bookmarklet) on Mobile Chrome with:
Name: View Source (vs)
URL: javascript:document.location=’view-source:’+document.location; void(0);
Now when on a page, tap the address field and start typing: vs. The bookmarklet should appear, click it and you are ready.
IN chrome, there is remote debugging facility. If you install Chrone on your phone. If you connect your phone through usb to PC,you can view the Javascript modified source on your PC in a Chrome browser.
If this is for debugging (from your comment it looks like it is) something even better is installing a user agent switcher extension for Firefox or Chrome on your desktop. Change the user agent to Android and you get the mobile version of the site, but with all the source and debugging tools you’re used to.
you can capture the source to your shell or to a text file if you’re using an emulator, which is very handy for development. To do this you’ll need to install Android Developer Tools, which comes with adb. Fire up your emulator then from your OS’s shell run the command:
This will output anything from the browser app on your emulator and suppress any other log messages. From there any javascript console.log commands will be captured by adb and output for you to view. So, if you’re using JQuery, you can add this to your page and it’ll output the whole page html to the log:
This will output everything within your html tag on the page to the log.
You can capture the output of your log (using BASH, at least, I can’t speak to other shells) with:
now, any output from the log gets dumped into your log.txt file. This is really handy for a whole page’s worth of HTML, as you can then search through it as you would any other text doc.
If you want to grab a specific bit of the page rather than the whole thing, you can specify that part of the page rather than the html tag in your JQuery, so if you need to look at a single div that has a class/id associated with it (for this example, it has a class named ‘inspect-me’), you can change your JQuery to:
Источник
9 Android WebView Examples In Kotlin & Java
Do you want to make an Android webview browser?
Don’t worry, I will help you to make a simple one.
Just like below. Android WebView browser
Download Source Code – Kotlin & Java
In this post, you will learn more about WebView. Okay, let’s start…
What is Android WebView?
There may be occasions when you want to show a webpage to your users such as Terms and conditions, app manual or your website and so on.
In a traditional way, we can send users to an external web browser but there is no guarantee that users would come back. So that’s one of the main reasons Android introduced a widget named WebView.
As the name suggests it helps to show or view online and offline web pages in our app. It’s available in android.webkit package and has abilities in history management, zooming, javascript, and CSS rendering.
From the beginning to now, WebView has grown a lot. Let’s check how it implemented in Android.
WebView to Android System Webview – implementation history
WebView was added in API level 1. It renders web pages using Webkit engine, which behind Apple’s Safari browser. Actually, WebKit makes an environment or views for the webpage to display on the app.
In Android 4.4, For better performance, Google decided to change webview rendering from stock webview to google’s chromium or blink.
Lots of bugs and fixes through os update, that made long time vulnerable. So Android engineers innovated a separate Android System Webview app that can install and update through Google’s app market Play store with next release “Lolipop”.
That made easy fixes in less time.
In Android 7.0, there is no need to enable Android System Webview app, Chrome will take care of webview. if it is disabled or uninstalled already, the system will use android system webview.
If both of them get disabled, webview will use stock Webkit engine and take care of your valuable web pages.
How to add WebView to your layout?
Webview can easily be added to your layout as any other view. You can just drag and drop webview or write code for that just like below
You can use it as a root element or as a child element. While using as a root element don’t forget to add XML namespace.
How To Create WebView Programmatically In Android?
For Kotlin users, I am using Android studio 3.1.2 and it uses Kotlin Android Extensions plugin by default. So there is no need to call findviewByid and cast. just use the id of the widget and call the methods.
Make sure Android Studio has imported these lines
Okay… Let’s start with our first example – Using the loadUrl() method.
Load Url – WebView Android Example In Kotlin & Java
We can easily load a webpage in webview using loadUrl() method. Just put your URL as a string, Before that, we must provide Internet permission in AndroidManifest.xml.
create a webview app in android with below code
How to force open links in webview?
If you are testing webview code in devices which contains Android System WebView version below 43.0.2357.121 or below Lolipop. If anyone below happens
- server side redirect
- Click on links in WebView
Then it might lead to opening an external browser. To force open all links in WebView, we need to set WebViewClient.
How to open link in the external browser using Android WebView
Sometimes You need to open your website links in webview and other links in external browsers. Then you can use the below sample code.
replace “www.example.com” with your site name.
But shouldOverrideUrlLoading (WebView view, String url) was deprecated in API level 24. So if you are planning to make an application for Nougat or above, then you can use
public boolean shouldOverrideUrlLoading (WebView view,WebResourceRequest request)
To open links in WebView in All devices use both shouldOverrideUrlLoading() methods just like
How To Play YouTube Video In WebView By Enabling JavaScript In Android
Let’s open youtube in our webview.
Use our first example, and replace URL in loadUrl with “https://www.youtube.com” and run.
You may see these type of actions:
- Youtube shows a progress bar loading.
- Bowser says Please enable JavaScript in your browser.
This is because of JavaScript. If you are a web developer, you already know the importance of javascript. If you don’t, Javascript is a client-side programming language, it helps us to provide validation, animations and popups and so on.
By default, Javascript is disabled on your browser. we can easily enable it by simple lines of code. how to enable javascript in android webview
Now you can start watching youtube videos in your webview.
Android WebView local file example
In this example, you will learn how to show a local HTML file in webview. We have already created a webpage for you. You can use that for a sample.
This is a local html file loaded from assets folder
Just make an assets folder in your project, Right click on app->New->Folder->Assets Folder. Now a dialog appears to change the location of assets folder. Leave it and Click Finish.
Place demo.html into assets folder and use below code
loadUrl() uses
LoadUrl() is a broad method and it works with:
-
- http:// and https:// URLs.
Eg: webview.loadUrl(“https://www.androidride.com”)
Webview.loadUrl(“//www.androidride.com”)
-
- Local filesystem URLs.
Don’t forget to add
In your AndroidManifest.xml.
-
- Application assets and resources URLs.
In URL, use android_asset not android_assets, yes, there is no ‘s’ at the end.
webview.loadUrl(“file:///android_res/mipmap/ic_launcher”)
There is no need for the file extension, but it won’t be a problem if you add it.
-
- content://URLs pointing content provider.
ERR_UNKNOWN_URL_SCHEME in Android WebView – Fixed.
In this example, You will learn how to solve ERR_UNKNOWN_URL_SCHEME in Android WebView. This type of error happens when WebView deals with UNKNOWN URL SCHEME links. Before that learn some basics.
What is URL SHEME?
The URL scheme is something before the colon in the URL. actually, it’s the protocol describes how to access the resource.
WebView knows how to deal with HTTP, HTTPS, and file Schemes, but they don’t know what to do when these type of schemes come. ‘tel:’, ‘sms:’, and ‘mailto:’ and others.
So we have to tell webview to how to deal with those schemes in shouldOverrideUrlLoading() method. In this example, we are going to use ‘tel:’, ‘sms:’, ‘mailto:’, and ‘geo:’ links. When you click on them, each link will get opened with appropriate apps installed on your Android device.
demo.html
-
-
- If it’s a network URL, WebView force the links to open in WebView,otherwise find a best option from Android System.
-
Create your webview app with the above code or you can download our example.
WebView loadData() example in Android
In this Android WebView example, we will show you how to render HTML code in Android WebView. It’s simple, Android API provides a method called loadData().
loadData() method needs 3 contents.
-
-
- String htmlData: This is our html content.
- String mimeType: here we use “text/html”.
- String encoding: most of the time, base64 or UTF-8.
-
- It works with data,http and https schemes.
- If you use other schemes, webview can’t access content due to javascript same origin policy.
- You should use loadDataWithBaseURL(), if you want to use other schemes.
-
WebView loadDataWithBaseURL() example in Android
In this example, you will learn how to work with loadDataWithBaseURL() example. When you want to fetch an image from the assets folder using loadData() method. JavaScript origin policy restricts the access to content.
loadDataWithBaseURL() avoids this problem by specifying BaseURL. Using the Base URL, system resolve relative URLs in HTML content.
loadDataWithBaseURL() needs
- String baseURL: This URL is used to resolve relatvie URLs.
- String data: Html content that you want to show.
- String mimeType: mimeType of HTML data
- String encoding: encoding of html data
- String historyURL: This URL loads when you navigate back in webview
In this example, I am going to use the same loadData() code but just want to add image ‘ic_launcher’ from the mipmap folder.
Android WebView Download File example
In this android webview example, you will learn how to download a file using WebView and DownloadManager. Using DownloadManager, we can reduce code and leave the stress to DownloadManager. We also show AlertDialog for Download notification.
You can download the file using AsyncTask too.
Create a webview app project in Android Studio, Add below lines to AndroidManifest.xml
How To Run JavScript In Android WebView
I already said JavaScript has an important role in the web world. In Android, we can also make use of JavaScript by sending data to Javascript from Android and vice versa. But it also raises security issues too. If you are using any third-party code, make sure it’s not vulnerable to users security.
Android API provides a number of methods and classes to achieve a super web app. I have categorized them
JavaScript calling Kotlin/Java
-
-
- addJavascriptInterface()
- WebMessagePort – (6.0)
-
Kotlin/Java calling JavaScript
-
-
- loadUrl()
- evaluateJavascript() – (4.4)
- WebMessage – (6.0)
-
The numbers shown in the brackets means the starting API. We are not going to discuss WebMessagePort and WebMessage here. That will be updated later.
webview addJavascriptInterface example in android
webview addjavascriptinterface example in android
In this addJavascriptInterface example, we send a message from a local HTML webpage to Android and show it through a toast.
JavaScript can access methods in API level Build.VERSION_CODES.JELLY_BEAN_MR1 and above, if they are
-
-
- defined as public
- annotated with JavascriptInterface
-
sample.html
MainActivity.kt
how above code works?
-
-
- JavaScript enabled.
- Inject java object into webpage using addJavascriptInterface() method. It needs
- Java class object: The java class object which inject into webview
- String name: The name used to access java methods from JavaScript
- It’s better to remove java object from webview after the use
-
WebView evaluateJavascript example in Android
Let’s call javascript from Java. In this example, we receive the text from edittext and send it to the local HTML page. Use loadUrl() for below 4.4 and evaluateJavascript() works with KitKat and above.
sample.html
MainActivity.kt
Android WebView Browser example – Progress bar included
Finally, we are here. Let’s create a webview app browser. This browser has
-
-
- ProgressBar support
- Google search and load URL support
- Download file support
- YouTube video support
- Navigate history and custom home page
- Share Support
-
open your Android Studio.
Step 1
Start a new Android Studio project.
Application Name: WebView Browser
Company Domain: androidride.example.com
Step 2
Select form factors and minimum SDK
Select API 15: IceCreamSandwich and Click Next.
Step 3
Step 4
Add INTERNET and WRITE_EXTERNAL_STORAGE permission in AndroidManifest.xml
AndroidManifest.xml
-
-
- android:windowSoftInputMode=”stateAlwaysHidden|adjustNothing” – it helps by without adjusting our bottom bar layout and disable the focus in EditText while startup.
-
Step 5
build.gradle
Step 6
Colors.xml
Step 7
Styles.xml
Step 8
activity_main.xml
-
-
- android:layout_weight attribute used to hold widgets.
- android:inputType=”textNoSuggestions” disable spell check
- android:background=”?android:selectableItemBackground” – makes transparent
-
I have used vector asset icons, you can also access them by right clicking on res->New->Vector Asset->Click on clip Art and select your icons, you can change color and size. Click OK and Next.
Step 9
custom_progress.xml
Step 10
This browser has a simple home page, for that, we have to add local HTML file in the assets folder.
demo.html
Step 11
MainActivity.kt
Hey… Thanks for scrolling. If you find anything useful in this post, please share it.
Conclusion
WebView has an important role in Android programming. With a few lines of code, beginners can also easily load web pages in their app. You have learned to download the file and run javascript using Android WebView. I am sure that these examples make you better dealing with WebView. This is a small guide about WebView. You can also find more information from below links.
-
- Building web apps in WebView
- WebView | Android Developers
Источник