Я интегрирую разрешение DevicePolicyManager, чтобы открывать настройки, когда пользователь нажимает кнопку из собственного реагирующего приложения.
Проблема, когда пользователь нажимает на кнопку, я получаю сообщение об ошибке: «Невозможно запустить ADD_DEVICE_ADMIN как новую задачу»
коды:
RNMyFancyLibraryModule.java
@ReactMethod
public void lockAppEnable(){
adminComponent = new ComponentName(mContext, SampleDeviceAdminReceiver.class);
Intent activateDeviceAdmin = new Intent(
DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
activateDeviceAdmin.putExtra(
DevicePolicyManager.EXTRA_DEVICE_ADMIN,
adminComponent);
activateDeviceAdmin
.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
"After activating admin, you will be able to block application uninstallation.");
activateDeviceAdmin.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
mContext.startActivity(activateDeviceAdmin);
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.reactlibrary2">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="26" />
<application>
<receiver
android:name="com.reactlibrary2.SampleDeviceAdminReceiver"
android:permission="android.permission.BIND_DEVICE_ADMIN" >
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
</application>
</manifest>
deviceAdmin.xml
<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
<uses-policies>
<!--
<limit-password />
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
<expire-password />
<encrypted-storage />
<disable-camera />
-->
</uses-policies>
</device-admin>
Код прекрасно работает, если я запускаю его извне, реагирую на нативное, как на родное приложение для Android