{"id":812,"date":"2023-10-04T14:55:20","date_gmt":"2023-10-04T11:55:20","guid":{"rendered":"https:\/\/barisuslucan.com\/en\/?p=812"},"modified":"2023-10-04T14:59:49","modified_gmt":"2023-10-04T11:59:49","slug":"how-to-obtain-root-permission-on-android-using-kotlin","status":"publish","type":"post","link":"https:\/\/barisuslucan.com\/en\/kotlin\/how-to-obtain-root-permission-on-android-using-kotlin\/","title":{"rendered":"How to Obtain ROOT Permission on Android Using Kotlin"},"content":{"rendered":"<p>Root permission on Android is a specialized authorization process that provides the owner or user (super user) of an Android device with full access and control over the device&#8217;s operating system. This process allows the user to intervene at deeper levels of the device and remove certain restrictions.<\/p>\n<p><span style=\"color: #00ffff;\"><strong>When root permission is obtained, the user can perform various operations, including:<\/strong><\/span><\/p>\n<p>\u2022 It can read, write, or delete and modify system files and folders.<\/p>\n<p>\u2022 It can manage system applications and services.<\/p>\n<p>\u2022 It can have direct access to hardware.<\/p>\n<p>In Kotlin, the following code can be used to obtain ROOT permission:<\/p>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\" fun grantRootAccess() {\n        var isRooted = try {\n            Runtime.getRuntime().exec(&quot;su&quot;)\n            true\n        } catch (e: IOException) {\n            false\n        } catch (e: TimeoutException) {\n            false\n        }\n\n        Thread.sleep(1000)\n\n        if (isRooted) {\n            Log.d(&quot;Superuser&quot;, &quot;Root access is successful.&quot;)\n        } else {\n            Log.e(&quot;Superuser&quot;, &quot;Root access could not be provided.&quot;)\n        }\n    }\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">grantRootAccess<\/span><span style=\"color: #D8DEE9FF\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">var<\/span><span style=\"color: #D8DEE9FF\"> isRooted <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">try<\/span><span style=\"color: #D8DEE9FF\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            Runtime.<\/span><span style=\"color: #88C0D0\">getRuntime<\/span><span style=\"color: #D8DEE9FF\">().<\/span><span style=\"color: #88C0D0\">exec<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #A3BE8C\">&quot;su&quot;<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        } <\/span><span style=\"color: #81A1C1\">catch<\/span><span style=\"color: #D8DEE9FF\"> (e: IOException) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        } <\/span><span style=\"color: #81A1C1\">catch<\/span><span style=\"color: #D8DEE9FF\"> (e: TimeoutException) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        Thread.<\/span><span style=\"color: #88C0D0\">sleep<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">1000<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> (isRooted) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            Log.<\/span><span style=\"color: #88C0D0\">d<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #A3BE8C\">&quot;Superuser&quot;<\/span><span style=\"color: #D8DEE9FF\">, <\/span><span style=\"color: #A3BE8C\">&quot;Root access is successful.&quot;<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        } <\/span><span style=\"color: #81A1C1\">else<\/span><span style=\"color: #D8DEE9FF\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            Log.<\/span><span style=\"color: #88C0D0\">e<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #A3BE8C\">&quot;Superuser&quot;<\/span><span style=\"color: #D8DEE9FF\">, <\/span><span style=\"color: #A3BE8C\">&quot;Root access could not be provided.&quot;<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    }<\/span><\/span><\/code><\/pre><\/div>\n\n\n<h5><strong><br \/>Access the system file system using the following code:<\/strong><\/h5>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import android.os.Environment\n\nfun getRootDirectory(): File {\n    return Environment.getRootDirectory()\n}\n\nfun readRootFile(path: String): String {\n    return File(getRootDirectory(), path).readText()\n}\n\nfun writeRootFile(path: String, data: String) {\n    File(getRootDirectory(), path).writeText(data)\n}\n\nfun deleteRootFile(path: String) {\n    File(getRootDirectory(), path).delete()\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> android.os.Environment<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">getRootDirectory<\/span><span style=\"color: #D8DEE9FF\">(): File {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> Environment.<\/span><span style=\"color: #88C0D0\">getRootDirectory<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">readRootFile<\/span><span style=\"color: #D8DEE9FF\">(path: String): String {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">File<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #88C0D0\">getRootDirectory<\/span><span style=\"color: #D8DEE9FF\">(), path).<\/span><span style=\"color: #88C0D0\">readText<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">writeRootFile<\/span><span style=\"color: #D8DEE9FF\">(path: String, <\/span><span style=\"color: #81A1C1\">data<\/span><span style=\"color: #D8DEE9FF\">: String) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">File<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #88C0D0\">getRootDirectory<\/span><span style=\"color: #D8DEE9FF\">(), path).<\/span><span style=\"color: #88C0D0\">writeText<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #81A1C1\">data<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">deleteRootFile<\/span><span style=\"color: #D8DEE9FF\">(path: String) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">File<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #88C0D0\">getRootDirectory<\/span><span style=\"color: #D8DEE9FF\">(), path).<\/span><span style=\"color: #88C0D0\">delete<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n<p><br \/>These codes perform operations such as accessing the root directory of the Android device&#8217;s file system, reading text from a file, writing text to a file, and deleting a file.<\/p>\n<h5><strong><br \/>Manage system applications and services using the following code:<\/strong><\/h5>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import android.content.pm.PackageManager\nimport android.content.pm.ApplicationInfo\nimport android.content.pm.PackageInstaller\n\nfun getSystemApplications(packageManager: PackageManager): List&lt;ApplicationInfo&gt; {\n    return packageManager.getInstalledApplications(0)\n}\n\nfun getSystemApplicationInfo(packageManager: PackageManager, packageName: String): ApplicationInfo? {\n    return packageManager.getApplicationInfo(packageName, 0)\n}\n\nfun installSystemApp(packageInstaller: PackageInstaller, packageName: String, apkFile: File) {\n    val appPackage = PackageInstaller.SessionParams(\n        installerPackageName = packageName,\n        installLocation = PackageInstaller.SessionParams.Mode.INTERNAL\n    )\n\n    val session = packageInstaller.createSession(appPackage)\n    session.openSession(apkFile)\n    session.commit(PackageInstaller.SessionCallback())\n}\n\nfun uninstallSystemApp(packageManager: PackageManager, packageName: String) {\n    packageManager.deletePackage(packageName, null, null)\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> android.content.pm.PackageManager<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> android.content.pm.ApplicationInfo<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> android.content.pm.PackageInstaller<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">getSystemApplications<\/span><span style=\"color: #D8DEE9FF\">(packageManager: PackageManager): List&lt;ApplicationInfo&gt; {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> packageManager.<\/span><span style=\"color: #88C0D0\">getInstalledApplications<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">getSystemApplicationInfo<\/span><span style=\"color: #D8DEE9FF\">(packageManager: PackageManager, packageName: String): ApplicationInfo? {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> packageManager.<\/span><span style=\"color: #88C0D0\">getApplicationInfo<\/span><span style=\"color: #D8DEE9FF\">(packageName, <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">installSystemApp<\/span><span style=\"color: #D8DEE9FF\">(packageInstaller: PackageInstaller, packageName: String, apkFile: File) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">val<\/span><span style=\"color: #D8DEE9FF\"> appPackage <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> PackageInstaller.<\/span><span style=\"color: #88C0D0\">SessionParams<\/span><span style=\"color: #D8DEE9FF\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        installerPackageName <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> packageName,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        installLocation <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> PackageInstaller.SessionParams.Mode.INTERNAL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">val<\/span><span style=\"color: #D8DEE9FF\"> session <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> packageInstaller.<\/span><span style=\"color: #88C0D0\">createSession<\/span><span style=\"color: #D8DEE9FF\">(appPackage)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    session.<\/span><span style=\"color: #88C0D0\">openSession<\/span><span style=\"color: #D8DEE9FF\">(apkFile)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    session.<\/span><span style=\"color: #88C0D0\">commit<\/span><span style=\"color: #D8DEE9FF\">(PackageInstaller.<\/span><span style=\"color: #88C0D0\">SessionCallback<\/span><span style=\"color: #D8DEE9FF\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">uninstallSystemApp<\/span><span style=\"color: #D8DEE9FF\">(packageManager: PackageManager, packageName: String) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    packageManager.<\/span><span style=\"color: #88C0D0\">deletePackage<\/span><span style=\"color: #D8DEE9FF\">(packageName, <\/span><span style=\"color: #81A1C1\">null<\/span><span style=\"color: #D8DEE9FF\">, <\/span><span style=\"color: #81A1C1\">null<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n<p><br \/>These codes perform operations such as listing all system applications installed on an Android device, retrieving information about a specific system application, installing a system application, and uninstalling a system application.<\/p>\n<h5><strong><br \/>Directly access hardware using the following code:<\/strong><\/h5>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import android.hardware.SensorManager\nimport android.hardware.Sensor\n\nfun getSensorManager(): SensorManager {\n    return getSystemService(Context.SENSOR_SERVICE) as SensorManager\n}\n\nfun getSensors(sensorManager: SensorManager): List&lt;Sensor&gt; {\n    return sensorManager.getSensorList(Sensor.TYPE_ALL)\n}\n\nfun getSensor(sensorManager: SensorManager, sensorType: Int): Sensor? {\n    return sensorManager.getDefaultSensor(sensorType)\n}\n\nfun registerSensorListener(sensorManager: SensorManager, sensor: Sensor, listener: SensorEventListener) {\n    sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL)\n}\n\nfun unregisterSensorListener(sensorManager: SensorManager, listener: SensorEventListener) {\n    sensorManager.unregisterListener(listener)\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> android.hardware.SensorManager<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> android.hardware.Sensor<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">getSensorManager<\/span><span style=\"color: #D8DEE9FF\">(): SensorManager {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">getSystemService<\/span><span style=\"color: #D8DEE9FF\">(Context.SENSOR_SERVICE) <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> SensorManager<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">getSensors<\/span><span style=\"color: #D8DEE9FF\">(sensorManager: SensorManager): List&lt;Sensor&gt; {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> sensorManager.<\/span><span style=\"color: #88C0D0\">getSensorList<\/span><span style=\"color: #D8DEE9FF\">(Sensor.TYPE_ALL)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">getSensor<\/span><span style=\"color: #D8DEE9FF\">(sensorManager: SensorManager, sensorType: Int): Sensor? {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> sensorManager.<\/span><span style=\"color: #88C0D0\">getDefaultSensor<\/span><span style=\"color: #D8DEE9FF\">(sensorType)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">registerSensorListener<\/span><span style=\"color: #D8DEE9FF\">(sensorManager: SensorManager, sensor: Sensor, listener: SensorEventListener) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    sensorManager.<\/span><span style=\"color: #88C0D0\">registerListener<\/span><span style=\"color: #D8DEE9FF\">(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">fun<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">unregisterSensorListener<\/span><span style=\"color: #D8DEE9FF\">(sensorManager: SensorManager, listener: SensorEventListener) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    sensorManager.<\/span><span style=\"color: #88C0D0\">unregisterListener<\/span><span style=\"color: #D8DEE9FF\">(listener)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n<p><br \/>These codes perform operations related to the Android device&#8217;s sensor manager, including accessing all the sensors available on the device, retrieving information about a specific sensor, registering a listener for a particular sensor, and removing a listener from a specific sensor.<\/p>\n<p>Soliciting root permission from the user is a sensitive event. When granted, your application can potentially become a system application, operate at the kernel level, and additionally, applications requesting root permission may not be eligible for distribution on Google Play.<\/p>\n<p>NOTE: This blog post does not aim to develop any hacking applications or malicious software targeting user sensitive information!<\/p>","protected":false},"excerpt":{"rendered":"<p>Root permission on Android is a specialized authorization process that provides the owner or user (super user) of an Android device with full access and control over the device&#8217;s operating system. This process allows the user to intervene at deeper levels of the device and remove certain restrictions. When root permission is obtained, the user can perform various operations, including: \u2022 It can read, write, or delete and modify system files and folders. \u2022 It can manage system applications and services. \u2022 It can have direct access to hardware. In Kotlin, the following code can be used to obtain ROOT&#8230;<\/p>\n","protected":false},"author":1,"featured_media":815,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[29],"tags":[],"class_list":["post-812","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kotlin"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/barisuslucan.com\/en\/wp-json\/wp\/v2\/posts\/812","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/barisuslucan.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/barisuslucan.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/barisuslucan.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/barisuslucan.com\/en\/wp-json\/wp\/v2\/comments?post=812"}],"version-history":[{"count":4,"href":"https:\/\/barisuslucan.com\/en\/wp-json\/wp\/v2\/posts\/812\/revisions"}],"predecessor-version":[{"id":818,"href":"https:\/\/barisuslucan.com\/en\/wp-json\/wp\/v2\/posts\/812\/revisions\/818"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/barisuslucan.com\/en\/wp-json\/wp\/v2\/media\/815"}],"wp:attachment":[{"href":"https:\/\/barisuslucan.com\/en\/wp-json\/wp\/v2\/media?parent=812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/barisuslucan.com\/en\/wp-json\/wp\/v2\/categories?post=812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/barisuslucan.com\/en\/wp-json\/wp\/v2\/tags?post=812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}