Отказ в разрешении: getCurrentUser() из идентификатора pid требует android.permission.INTERACT_ACROSS_USERS

Я получаю это сообщение об ошибке:

Отказ в разрешении: getCurrentUser() из идентификатора pid требует android.permission.INTERACT_ACROSS_USERS

При попытке воспроизвести рингтон из действия, которое запускается извне из службы Push Firebase.

Действия по воспроизведению:

  1. Запустите приложение.
  2. Нажмите кнопку Standby: экран погаснет.
  3. Запустите приложение через внешнее входящее Push-сообщение из Firebase
  4. Ожидается: приложение должно воспроизводить рингтон
  5. Фактически: рингтон воспроизводится очень коротко: 200 мс, системные вызовы onStop()_

Эта проблема не возникает, когда:

  1. Удаление приложения из памяти
  2. Нажатие кнопки "Домой" и включение экрана

Это определенно код звонка, который запускает OnStop. Я также пробовал SoundPool и MediaPlayer, и поведение такое же.

Этот ответ кажется устаревшим и, похоже, не работает.

Документация на сайте Google не работает (UserHandle.getCallingUserId() не существует, UserManager недоступен), но я думаю, что это правильное направление.

class PushMessageService : FirebaseMessagingService() {
    override fun onMessageReceived(message: RemoteMessage?) {
        VideoRingingActivity.start(getApp().applicationContext)
    }
}

class VideoRingingActivity : BaseActivity() {

    private var ringtone: Ringtone? = null
    private lateinit var binding: ActivityVideoRingingBinding

    companion object {
        fun start(context: Context) {
            val intent = Intent(context, VideoRingingActivity::class.java)
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
            context.startActivity(intent)
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        component.inject(this)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_video_ringing)
        playRingtone()
    }

    private fun playRingtone() {
        val uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALL)
        ringtone = RingtoneManager.getRingtone(getActivity() as Context?, uri)
        ringtone?.play()
    }

    override fun onDestroy() {
        // The system calls this method shortly after ringtone.play()
        super.onDestroy()
        ringtone?.stop()
    }

    override fun onStop() {
        // The system calls this method shortly after ringtone.play()
        super.onStop()
        ringtone?.stop()
    }
}

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"

    <permission android:name="android.permission.INTERACT_ACROSS_USERS" android:protectionLevel="signature"/>
    </manifest>

Полная трассировка стека:

11-05 23:09:33.102 18853-18853 / W / Уведомление: использование типов потоков не рекомендуется для операций, отличных от управления громкостью 11-05 23:09:33.103 18853-18853 / W / Уведомление: см. Документацию setSound () для того, чтобы использовать вместо этого с android.media.AudioAttributes, чтобы квалифицировать ваш вариант использования воспроизведения 11-05 23:09:33.503 18853-18988 / W / MediaPlayerNative: информация / предупреждение (10973, 0) 11-05 23: 09: 34.380 18853-18853 / W / System.err: java.lang.SecurityException: Отказ в разрешении: getCurrentUser() from pid=18853, uid=10215 требует android.permission.INTERACT_ACROSS_USERS 11-05 23:09:34.385 18853-18853/ W/System.err: at android.os.Parcel.readException(Parcel.java:1959) 11-05 23:09:34.386 18853-18853/ W/System.err: at android.os.Parcel.readException(Parcel.java:1905) на android.sec.clipboard.IClipboardService$Stub$Proxy.isEnabled(IClipboardService.java:757) 11-05 23:09:34.387 18853-18853/ W/System.err: на com.samsung.android.content.clipboard.SemClipboardManager.isEnabled(SemClipboardManager.java:1008) в android.widget.TextView.getSecClipboardEnabled(TextView.java:16134) 11-05 23:09:34.388 18853-18853/ W/System.err: в android.widget.TextView.onDetachedFromWindowInternal(TextView.java:7178) в android.view.View.dispatchDetachedFromWindow(View.java:18659) 11-05 23:09:34.389 18853-18853/ W/System.err: at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3878) 11-05 23:09:34.392 18853-18853/ W/System.err: на android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3878) 11-05 23:09:34.393 18853-18853/ W/System.err: на android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3878) 11-05 23:09:34.394 18853-18853/ W/System.err: at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3878) 11-05 23:09:34.395 18853-18853/ W/System.err: в android.view.ViewRootImpl.dispatchDetachedFromWindow(ViewRootImpl.java:4042) в android.view.ViewRootImpl.doDie(ViewRootImpl.java:7332) 11-05 23: 34.396 18853-18853/ W/System.err: at android.view.ViewRootImpl.die(ViewRootImpl.java:7309) в android.view.WindowManagerGlobal.removeViewLocked(WindowManagerGlobal.java:497) 11-05 23:09:34.397 18853-18853/ W/System.err: at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:435) в android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:131) 11-05 23:09:34.398 18853-18853/ W/System.err: в android.app.ActivityThread.handleDestroyActivity(ActivityThread. Java:4643) 11-05 23:09:34.401 18853-18853/ W/System.err: at android.app.ActivityThread.-wrap5(неизвестный источник:0) в android.app.ActivityThread$H.handleMessage(ActivityThread. Java:1757) на android.os.Handler.dispatchMessage(Handler.java:105) 11-05 23:09:34.402 18853-18853/ W/System.err: на android.os.Looper.loop(Looper.java:164) в android.app.ActivityThread.main(ActivityThread.java:6938) 11-05 23:09:34.403 18853-18853/ W/System.err: в java.lang.reflect.Method.invoke(собственный метод) в com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 11-05 23:09:34.404 18853-18853/ W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 11-05 23:09:34.406 18853-18853/ W/System.err: java.lang.SecurityException: Отказ в разрешении: getCurrentUser() из pid = 18853, uid = 10215 требует android.permission.INTERACT_ACROSS_USERS 11-05 23:09:34.411 18853-18853/ W/System.err: в android.os.Parcel.readException(Parcel.java:1959) 11-05 23:09:34.411 18853-18853/ W/System.err: at android.os.Parcel.readException(Parcel.java:1905) 11-05 23:09:34.412 18853-18853/ W/System.err: at android.sec.clipboard.IClipboardService$Stub$Proxy.isEnabled(IClipboardService.java:757) 11-05 23:09:34.412 18853-18853/ W/System.err: at com.samsung.android.content.clipboard.SemClipboardManager.isEnabled(SemClipboardManager.java:1008) 11-05 23:09:34.413 18853-18853/ W/System.err: at android.widget.TextView.getSecClipboardEnabled(TextView.java):16134) at android.widget.TextView.onDetachedFromWindowInternal(TextView.java:7178) 11-05 23:09:34.414 18853-18853/ W/System.err: в android.view.View.dispatchDetachedFromWindow (View.java:18659) в android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3878) 11-05 23:09:34.417 18853-18853/ W/System. ошибка: на android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3878) 11-05 23:09:34.418 18853-18853/ W/System.err: на android.view.ViewRootImpl.dispatchDetachedFromWindow (ViewRootImpl): java на android.view.ViewRootImpl.doDie(ViewRootImpl.java:7332) 11-05 23:09:34.419 18853-18853/ W/System.err: на android.view.ViewRootImpl.die (ViewRootImpl.java:7309) на андроиде.view.WindowManagerGlobal.removeViewLocked(WindowManagerGlobal.java:497) 11-05 23:09:34.420 18853-18853/ W/System.err: at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:435) в android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:131) 11-05 23:09:34.421 18853-18853/ W/System.err: at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4643) 11-05 23:09:34.421 18853-18853/ W/System.err: at android.app.ActivityThread.-wrap5(неизвестный источник:0) 11-05 23:09:34.422 18853-18853/ W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1757) 11-05 23:09:34.422 18853-18853/ W/System.err: at android.os.Handler.dispatchMessage(Handler.java:105) 11-05 23:09:34.423 18853-18853/ W/System.err: на android.os.Looper.loop(Looper.java:164) 11-05 23:09:34.423 18853-18853/ W/System.err: на android.app.ActivityThread.main(ActivityThread.java:6938) 11-05 23:09:34.426 18853-18853/ W/System.err: at java.lang.reflect.Method.invoke(собственный метод) 11-05 23:09:34.427 18853-18853/ W/System.err: на com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:327) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 11-05 23:09:34.429 18853-18853/ W/System.err: java.lang.SecurityException: Отказ в разрешении: getCurrentUser() из pid = 18853, uid = 10215 требует android.permission.INTERACT_ACROSS_USERS 11-05 23:09:34.433 18853-18853/ W/System.err: на android.os.Parcel.readException (Parcel.java:1959) на android.os.Parcel.readException(Parcel.java:1905) 11-05 23:09:34.434 18853-18853/ W/System.err: на android.sec.clipboard.IClipboardService $ Stub $ Proxy.isEnabled (IClipboardService.java:757) в com.samsung.android.content.clipboard.SemClipboardManager.isEnabled (SemClipboardManager.java:1008) 11-05 23: 34: 34: 34 -18853 / W / System.err: в android.widget.TextView.getSecClipboardEnabled (TextView.java:16134) в android.widget.TextView.onDetachedFromWindowInternal(TextView.java:7178) 11-05 23:09:34.435 18853-188 / W/System.err: at android.widget.TextView.onDetachedFromWindowInternal(TextView.java:7178) 11-05 23:09:34.436 18853-18853/ W/System.err: at android.view.View.dispatchDetachedFromWindow(Просмотреть.java: 18659) в android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3878) 11-05 23:09:34.438 18853-18853/ W/System.err: в android.view.ViewGroup.dispatchDetachedFromWindow (ViewGroup.java):3878) 11-05 23:09:34.439 18853-18853/ W/System.err: at android.view.ViewRootImpl.dispatchDetachedFromWindow(ViewRootImpl.java:4042) на android.view.ViewRootImpl.doDie(ViewRootImpl.java:7332) 11-05 23:09:34.440 18853-18853 System.err: at android.view.ViewRootImpl.die (ViewRootImpl.java:7309) на android.view.WindowManagerGlobal.removeViewLocked(WindowManagerGlobal.java:497) 11-05 23:09:34.441 18853-18853/ W/System. ошибка: на android.view.WindowManagerGlobal.removeView (WindowManagerGlobal.java:435) на android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:131) 11-05 23:09:34.442 18853-18853/ W/System.er: на android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4643) на android.app.ActivityThread.-wrap5 (неизвестный источник:0) 11-05 23:09:34.443 18853-18853/ W/System.err: на android.app.ActivityThread$H.handleMessage(ActivityThread.java:1757) в android.os.Handler.dispatchMessage(Handler.java:105) 11-05 23:09:34.444 18853-18853/ W/System.err: в android.os.Looper.loop (Looper.java:164) в android.app.ActivityThread.main (ActivityThread.java:6938) на java.lang.reflect.Method.invoke(собственный метод) 11-05 23:09:34.445 18853-18853/ W/System.err: на com.android.internal. os.Zygote $ MethodAndArgsCaller.run (Zygote.java:327) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)

0 ответов

Другие вопросы по тегам