layout | title | permalink | machine_name | menu |
---|---|---|---|---|
page |
API |
apidoc |
api |
true |
Doki by Double Dot Labs is an UI Library helping you with displaying information from DKMA. It provides a nice UI easily embeddable into your app if you do not want to mess with the APIs below.
AutoStart by Jude Fernandes is a library that helps bring up the autostart permission manager for different OEMs so that users can allows apps to start automatically. AOSP does not use this permission, but some OEMs (usually highly rated in our list) require it. This permission is essential for alarm clocks, calendars health tracking apps or anything which needs to work permanently or regularly on a device.
Use your app's real name in all guides and references
https://dontkillmyapp.com?app=[MyAppName]
https://dontkillmyapp.com?app=Sleep%20as%20Android
Choose negative score icon of your taste
https://dontkillmyapp.com?[Icon_Number]
https://dontkillmyapp.com?2
Special case: Add ?0
parameter to prevent showing any score icon.
https://dontkillmyapp.com?2&app=Sleep
or https://dontkillmyapp.com?app=Sleep&2
or https://dontkillmyapp.com?app=Sleep&?2
Don't kill my app provides a JSON API for developers to use on their websites or in their apps.
Please let us know when you use the API via e-mail at jiri.richter@urbandroid.org and give credit to dontkillmyapp.com.
URL: https://dontkillmyapp.com/api/v2/[vendor].json
example: https://dontkillmyapp.com/api/v2/nokia.json
API v2 provides one JSON URL per vendor.
scheme:
{
"name": "Human-readable vendor name",
"manufacturer": ["name","alias1","alias2"],
"url": "/relative-url-to-vendor",
"award": number or null,
"position": number or null,
"explanation": "JSON-escaped HTML",
"user_solution": "JSON-escaped HTML",
"developer_solution": "JSON-escaped HTML"
}
Android example (Kotlin):
// Use this method in your ViewModel
fun getDKMAData() {
viewModelScope.launch(Dispatchers.IO) {
val result = try {
val manufacturer = Build.MANUFACTURER.toLowerCase(Locale.ROOT).replace(" ", "-")
val url = URL("https://dontkillmyapp.com/api/v2/$manufacturer.json")
val json = JSONTokener(url.readText()).nextValue() as JSONObject?
json?.getString("user_solution")?.replace(Regex("\\[[Yy]our app\\]"), yourAppName)
} catch (e: Exception) {
// Vendor not present in the DontKillMyApp list
null
}
withContext(Dispatchers.Main) {
when (result) {
null -> TODO("Handle lack of result")
else -> TODO("Pass back result to your UI here")
}
}
}
}
// Use this method in your UI, Activity or Fragment
fun showData(result: String) {
AlertDialog.Builder(context)
.setTitle("How to make my app work")
.setView(webview.loadDKMAData(result))
.setPositiveButton(android.R.string.ok, null)
.show()
}
fun WebView.loadDKMAData(result: String) {
loadData(result, "text/html; charset=utf-8", "UTF-8")
webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
loadUrl(url)
return true
}
}
}
URL: https://dontkillmyapp.com/api/v1/output.json
scheme:
{ "vendors" :
[
{
"name": "Human-readable vendor name",
"url": "/relative-url-to-vendor",
"award": number or null,
"explanation": "JSON-escaped HTML",
"user_solution": "JSON-escaped HTML",
"developer_solution": "JSON-escaped HTML"
},
{
...
},
{
...
}
]
}
We encourage anyone to include DontKillMyApp badges to their sites or device reviews.
<a href="https://dontkillmyapp.com/nokia?2"><img width="306px" src="https://dontkillmyapp.com/badge/nokia2.svg"></a>
<a href="https://dontkillmyapp.com/xiaomi?3"><img width="306px" src="https://dontkillmyapp.com/badge/xiaomi3.svg"></a>
Image source
https://dontkillmyapp.com/badge/VENDOR+ICON_NUMBER.svg
Link
https://dontkillmyapp.com/VENDOR?ICON_NUMBER