This Android application boilerplate allows users (at compile time) to sandbox a website, either from the web or locally, in the android.webkit.WebView.
vaeringjar 7278604faf added licences | 9 years ago | |
---|---|---|
.idea | 9 years ago | |
app | 9 years ago | |
gradle | 9 years ago | |
.gitignore | 9 years ago | |
Hundreds.iml | 9 years ago | |
LICENSE.md | 9 years ago | |
LICENSE_Apache-2.0.txt | 9 years ago | |
LICENSE_gpl-3.0.txt | 9 years ago | |
README.md | 9 years ago | |
build.gradle | 9 years ago | |
gradle.properties | 9 years ago | |
gradlew | 9 years ago | |
gradlew.bat | 9 years ago | |
settings.gradle | 9 years ago |
This Android application boilerplate allows users (at compile time) to sandbox a website, either from the web or locally, in the android.webkit.WebView.
Copyright 2015 vaeringjar
Multi-licensed as GLPv3+ and Apache 2.0:
https://www.gnu.org/licenses/gpl-3.0.html
https://www.apache.org/licenses/LICENSE-2.0.html
You have the option to either sandbox a website with files on the local file system or to sandbox an internet website. You can also change the name of the program and its icons.
The source should have the following:
Hundreds/app/src/main/assets/root/
Hundreds/app/src/main/res/drawable-%
Hundreds/app/src/main/java/community/peers/hundreds/MainActivity.java
Hundreds/app/src/main/java/community/peers/hundreds/HundredsSandbox.java
Hundreds/app/src/main/AndroidManifest.xml
Hundreds/app/src/main/res/values/strings.xml
Hundreds/app/build.gradle
If you would like to fork Hundreds to install many instances with different configurations, and if you use Gradle, make sure to update your Hundreds/app/build.gradle file with a distinct applicationId. Most of these use descending (reverse) domain names, but you can really use anything you like.
If you do not fork Hundreds, each time you install a "new" application configuration build, Android will recognize the apk as an update rather than a separate app.
To change the name, open AndroidManifest.xml and change either the references for any of these:
android:label="@string/app_name"
Or update the values in strings.xml:
<resources>
<string name="app_name">Hundreds</string>
...
</resources>
To add a customized icon, update the reference in the AndroidManifest.xml:
android:icon="@drawable/ic_launcher"
Then update the files in the res/drawable folders. Each of the folders holds a different icon for a different screen density. Other projects might have higher or lower density folders, in addtion to these.
drawable-mdpi/ic_launcher.png //48px x 48px
drawable-hdpi/ic_launcher.png //72px x 72px
drawable-xhdpi/ic_launcher.png //96px x 96px
drawable-xxhdpi/ic_launcher.png //144px x 144px
For the reference in the AndroidManifest.xml to match, each density variation needs the same file name.
Optionally, you can put one large icon, for example 512px x 512px, in Hundreds/app/src/main/res/drawable-xxhdpi and your device will render it at run time. This makes it easier to maintain, but it might produce a lower quality icon when displaying the file.
In the assets/root directory, place the complete website. At the very least, place an index.html file.
In the MainActivity.java, set the flag loadLocal to true. This will tell Hundreds to look at the file system instead of an internet website.
private boolean loadLocal = true;
In the MainActivity.java, set the flag loadLocal to false. This will tell Hundreds to look at a website domain name instead of in the local assets/root directory.
private boolean loadLocal = false;
In HundredsSandbox.java, set the desired protocol and domain name for the internet website. For example:
public final static String PROTOCOL_HTTP = "http://";
public final static String DOMAIN_INTERNET = "peers.community";
Note the project has multiple ignore files:
Hundreds/.gitignore
Hundreds/app/.gitignore
The Android Developer Reference warns about vulnerabilities for Android systems earlier than 4.2.
https://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29
https://developer.android.com/reference/android/webkit/JavascriptInterface.html