Как запросить разрешение в AccessibilityService?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как запросить разрешение в AccessibilityService?

Сообщение Anonymous »

Для запроса разрешения я обращаюсь к примеру на официальном сайте:
class MyAccessibilityService : AccessibilityService() {
override fun onServiceConnected() {
when (ContextCompat.checkSelfPermission(
this as Context,
Manifest.permission.SYSTEM_ALERT_WINDOW
)) {
PackageManager.PERMISSION_GRANTED -> {
Log.v(TAG, "SYSTEM_ALERT_WINDOW")
}
else -> {
// You can directly ask for the permission.
requestPermissions(
MainActivity(),
arrayOf(Manifest.permission.SYSTEM_ALERT_WINDOW),
0
)
}
}
}
}

Затем он сообщил об ошибке:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.freedom.android.debug, PID: 2716
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference
at android.content.ContextWrapper.getPackageManager(ContextWrapper.java:98)
at android.app.Activity.requestPermissions(Activity.java:5273)
at androidx.core.app.ActivityCompat$Api23Impl.requestPermissions(ActivityCompat.java:850)
at androidx.core.app.ActivityCompat.requestPermissions(ActivityCompat.java:520)
at com.freedom.android.service.MyAccessibilityService.onServiceConnected(MyAccessibilityService.kt:215)
at android.accessibilityservice.AccessibilityService.dispatchServiceConnected(AccessibilityService.java:501)
at android.accessibilityservice.AccessibilityService.access$100(AccessibilityService.java:220)
at android.accessibilityservice.AccessibilityService$2.onServiceConnected(AccessibilityService.java:1625)
at android.accessibilityservice.AccessibilityService$IAccessibilityServiceClientWrapper.executeMessage(AccessibilityService.java:1852)
at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:44)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8668)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)

Я думаю, что что-то не так с первым параметром requestPermissions, похоже, что MainActivity() не следует использовать.
Как правильно передать тип Activity? Можно ли в этом случае использовать MainActivity?
Что делать, если я не могу использовать MainActivity? Кстати, я использую Jetpack Compose, реальная версия устройства — Android 10.
первое редактирование
Я создал EmptyAcitivity
class EmptyActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContent{
Surface(
// color = Color.Transparent
) {
Text(
fontSize = 50.sp,
modifier = Modifier.padding(2.dp),
text = "Hello World"
)
}
}

// requestPermissions(
// arrayOf(Manifest.permission.SYSTEM_ALERT_WINDOW),
// 0
// )
}
}

AndroidManifest.xml


Затем запустите его в AccessibilityService следующим образом:
startActivity(Intent(this, EmptyActivity::class.java).addFlags(FLAG_ACTIVITY_NEW_TASK))


Подробнее здесь: https://stackoverflow.com/questions/757 ... ityservice
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»