Inilah jejak tumpukan saya:
01-30 15:11:41.037 13010-13010/project.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: project.app, PID: 13010
android.view.WindowManager$BadTokenException:
Unable to add window android.view.ViewRootImpl$W@c745883 -- permission denied for window type 2003
at android.view.ViewRootImpl.setView(ViewRootImpl.java:789)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
at android.app.Dialog.show(Dialog.java:330)
at com.facebook.react.devsupport.DevSupportManagerImpl$4.run(DevSupportManagerImpl.java:344)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Saya menemukan jawaban tentang TYPE_SYSTEM_ERROR
tidak digunakan lagi di Android Oreo (8) jadi saya menerapkan metode berikut yang juga saya temukan:
public void fixAndroid() {
WindowManager.LayoutParams params;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_FULLSCREEN,
PixelFormat.TRANSLUCENT);
} else {
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
WindowManager.LayoutParams.FLAG_FULLSCREEN,
PixelFormat.TRANSLUCENT);
}
}
Di dalam metode onCreate()
saya, saya memiliki:
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Checking permissions on init
fixAndroid();
}
Saya masih mendapatkan kesalahan.
Saya menggunakan Expo SDK 21, React Native 0.48. Aplikasi telah terlepas dari ExpoKit.
Setelah setiap perubahan saya membersihkan proyek saya dan kemudian menjalankannya di Emulator melalui Android Studio.
Edit: Saya menjalankan ini pada emulator Nexus 5X, berjalan pada API 27.
WindowManager.LayoutParams
. Menarik untuk melihat apa yang terjadi dengan:WindowManager.LayoutParams.TYPE_TOAST
atauWindowManager.LayoutParams.TYPE_APPLICATION_PANEL
dan jugaWindowManager.LayoutParams.TYPE_SYSTEM_ALERT
dengan:<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
di manifes - person Jon Goodwin   schedule 02.02.2018