This is an android library to display the licenses of your application libraries in a easy way.
You can download the sample apk here.
Below is the demo screenshot:
Step 1: Installation
Adding the library via Gradle
First of all add this to your root build.gradle file:
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
Now add the dependency to your app build.gradle file:
implementation 'com.github.marcoscgdev:Licenser:2.0.0'
Step: 2 – creating a dialog
You have to use an AppCompatActivity
LicenserDialog(this)
.setTitle("Licenses")
.setCustomNoticeTitle("Notices for files:")
.setBackgroundColor(Color.RED) // Optional
.setLibrary(Library("Android Support Libraries",
"https://developer.android.com/topic/libraries/support-library/index.html",
License.APACHE2)) // APACHE deprecated, see wiki
.setLibrary(Library("Example Library",
"https://github.com/marcoscgdev",
License.APACHE2)) // APACHE deprecated, see wiki
.setLibrary(Library("Licenser",
"https://github.com/marcoscgdev/Licenser",
License.MIT))
.setPositiveButton(android.R.string.ok, object:DialogInterface.OnClickListener() {
fun onClick(dialogInterface:DialogInterface, i:Int) {
// TODO: 11/02/2018
}
})
.show()
You can also set a custom dialog theme:
LicenserDialog(this, R.style.DialogStyle)
...
Library structure:
val lib1 = Library(var title: String, var url: String?, var license: License)
NEW: License structure:
// Use a license code like APACHE2 or MIT
val lic1 = License(val code: String, var htmlContent: String)
LICENSE TYPES (At this moment):
- License.APACHE1 // Apache v1
- License.APACHE1_1 // Apache v1.1
- License.APACHE2 // Apache v2
- License.BSD3 // BSD v3
- License.BSD4 // BSD v4
- License.BSL // BSL
- License.CREATIVE_COMMONS // Creative commons
- License.FREEBSD // FreeBSD
- License.GNU2 // GNU v2
- License.GNU3 // GNU v3
- License.ISC // ISC
- License.LGPL2_1 // GNU Lesser v2.1
- License.LGPL3 // GNU Lesser v3
- License.MIT // MIT
- License.MPL1 // MPL v1
- License.MPL1_1 // MPL v1.1
- License.MPL2 // MPL v2
- License.NTP // NTP
- License.OFL1_1 // SIL Open Font License v1.1
Please, if you need a license that is not yet in this list, try to create a custom license.
val lic1 = License("CUSTOM_LICENSE_CODE", customLicenseHtmlContent)
val lib1 = Library("Library name", "https://github.com/marcoscgdev", lic1)
If you don’t want a dialog, you can use the Licenser class:
var licenser = Licenser()
.setCustomNoticeTitle("Notices for files:")
.setLibrary(Library("Android Support Libraries",
"https://developer.android.com/topic/libraries/support-library/index.html",
License.APACHE))
.setLibrary(Library("Example Library",
"https://github.com/marcoscgdev",
License.APACHE))
.setLibrary(Library("Licenser",
"https://github.com/marcoscgdev/Licenser",
License.MIT))
And show it in a webview:
webView.loadData(licenser.htmlContent, "text/html; charset=UTF-8", null)
Extra functions
You can access this functions with both classes
var licenses = licenser.getHTMLContent() // HTML content
var apacheLibraries = licenser.getApacheLibraries()
var mitLibraries = licenser.getMitLibraries()
var gnuLibraries = licenser.getGnuLibraries()
Full Example
Below is a full example:
1. Layouts
We have only one layout:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.marcoscg.licensersample.MainActivity">
<Button
android:id="@+id/bt_show_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/show_dialog" />
</RelativeLayout>
2. Code
MainActivity.kt
package com.marcoscg.licensersample
import android.content.DialogInterface
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import com.marcoscg.licenser.Library
import com.marcoscg.licenser.License
import com.marcoscg.licenser.LicenserDialog
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private var licenserDialog: LicenserDialog? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val customLicenseHtmlContent = "Licensed under the Custom License, V.3" +
"<br><br>LICENSE DESCRIPTION HERE<br>REMEMBER TO USE HTML TAGS!"
licenserDialog = LicenserDialog(this, R.style.DialogStyle)
.setTitle("Licenses")
.setCancelable(true)
.setBackgroundColor(ContextCompat.getColor(this, R.color.colorPrimary))
.setCustomNoticeTitle("Notices for files:")
.setLibrary(Library("Android Support Libraries",
null,
License.APACHE2))
.setLibrary(Library("Example Library",
"https://github.com/marcoscgdev",
License.APACHE2))
.setLibrary(Library("Licenser",
"https://github.com/marcoscgdev/Licenser",
License.MIT))
.setLibrary(Library("Custom library",
null,
License("CUSTOM_LIC", customLicenseHtmlContent))) // use license code like APACHE2 or MIT
.setPositiveButton(android.R.string.ok, DialogInterface.OnClickListener { dialogInterface, i ->
// TODO: 11/02/2018
})
//val apache2Libraries = licenserDialog?.apache2Libraries
bt_show_dialog.setOnClickListener {
licenserDialog?.show()
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_github -> {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/marcoscgdev/Licenser")))
true
}
else -> super.onOptionsItemSelected(item)
}
}
}
Reference
You can access Licenser wiki here.
Download the code here.
Read more here