Действия служат уровнем представления для приложения. Их безопасность и разрешения довольно просты и состоят только из того, кто может запускать действие. Чтобы потребовать определенное разрешение для запуска Activity, вам необходимо добавить атрибут разрешения к указанной c записи Activity в AndroidManifest. xml. Например, если у вас есть HomeActivity, и для запуска этого действия вам необходимо разрешение LoginActivity, тогда ваш файл манифеста будет выглядеть следующим образом:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.appname">
<permission android:name="com.example.appname.permission.LoginActivity" android:protectionLevel="signature" />
<application>
<activity
android:name=".ui.homecreen.HomeActivity"
android:exported="false"
android:permission="com.example.appname.permission.LoginActivity" />
</application>
</manifest>
Из приведенного выше примера вы можете увидеть это, если хотите для запуска Homeactivity из командной строки с помощью adb, тогда он выдаст ошибку, говоря, что он защищен и требует разрешения. Но если хакер каким-либо образом запускает LoginActivity, а затем пытается запустить HomeActivity, тогда ему будет предоставлен доступ, потому что у него есть доступ к LoginActivity.
Для решения этой проблемы я использовал следующий код:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.appname">
<permission android:name="com.example.appname.permission.HomeActivity" android:protectionLevel="signature" />
<application>
<activity
android:name=".ui.homecreen.HomeActivity"
android:exported="false"
android:permission="com.example.appname.permission.HomeActivity" />
</application>
</manifest>
Как видите, я дал этому действию собственное разрешение. Таким образом, теперь это действие не будет доступно никаким сторонним приложениям, например командной строке. И Хакер не сможет взломать вашу деятельность.