java - Android设置应用启动显示失败
问题描述
我的目标是在虚拟显示器中启动应用程序,我正在尝试在我的第一个应用程序中构建虚拟显示器。
mDisplayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
mDisplayRealMetrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
windowManager.getDefaultDisplay().getRealMetrics(mDisplayRealMetrics);
mVirtualDisplay = mDisplayManager.createVirtualDisplay("Test Virtual Display",
mVirtualDispalyWidth, mVirtualDisplayHeight, mDisplayRealMetrics.densityDpi,
surface, DisplayManager.VIRTUAL_DISPLAY_FLAG_PRESENTATION,
null, null
);
然后我构建 anthor 应用程序并android:exported="true"
在此应用程序的清单中进行设置。
在我的第一个应用程序中,我创建了一个按钮并单击按钮事件。
setupVirtualDisplay();
Intent intent = new Intent( );
intent.setClassName( "com.example.test","com.example.test.MainActivity");
Bundle bundle = new Bundle( );
bundle = ActivityOptions.makeBasic().setLaunchDisplayId( mVirtualDisplay.getDisplay().getDisplayId() ).toBundle();
intent.setFlags( Intent.FLAG_ACTIVITY_MULTIPLE_TASK | Intent.FLAG_ACTIVITY_NEW_TASK );
startActivity( intent, bundle );
错误:
2020-02-23 16:47:26.276 7227-7227/com.example.testvirtualdisplay E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.testvirtualdisplay, PID: 7227
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.view.View$DeclaredOnClickListener.onClick(View.java:6430)
at android.view.View.performClick(View.java:7870)
at android.widget.TextView.performClick(TextView.java:14956)
at android.view.View.performClickInternal(View.java:7839)
at android.view.View.access$3600(View.java:886)
at android.view.View$PerformClick.run(View.java:29315)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7770)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1047)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.view.View$DeclaredOnClickListener.onClick(View.java:6425)
at android.view.View.performClick(View.java:7870)
at android.widget.TextView.performClick(TextView.java:14956)
at android.view.View.performClickInternal(View.java:7839)
at android.view.View.access$3600(View.java:886)
at android.view.View$PerformClick.run(View.java:29315)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7770)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1047)
Caused by: java.lang.SecurityException: Permission Denial: starting Intent { flg=0x18000000 cmp=com.example.test/.MainActivity } from ProcessRecord{cd3c4d4 7227:com.example.testvirtualdisplay/u0a319} (pid=7227, uid=10319) with launchDisplayId=11
at android.os.Parcel.createException(Parcel.java:2088)
at android.os.Parcel.readException(Parcel.java:2056)
at android.os.Parcel.readException(Parcel.java:2004)
at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:4260)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1713)
at android.app.Activity.startActivityForResult(Activity.java:5276)
at android.app.Activity.startActivity(Activity.java:5601)
at com.example.testvirtualdisplay.MainActivity.onClickButton(MainActivity.java:133)
at java.lang.reflect.Method.invoke(Native Method)
at android.view.View$DeclaredOnClickListener.onClick(View.java:6425)
at android.view.View.performClick(View.java:7870)
at android.widget.TextView.performClick(TextView.java:14956)
at android.view.View.performClickInternal(View.java:7839)
at android.view.View.access$3600(View.java:886)
at android.view.View$PerformClick.run(View.java:29315)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7770)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1047)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.wm.SafeActivityOptions.checkPermissions(SafeActivityOptions.java:217)
at com.android.server.wm.SafeActivityOptions.getOptions(SafeActivityOptions.java:123)
at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:909)
at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:666)
at com.android.server.wm.ActivityStarter.startActivityMayWait(ActivityStarter.java:1749)
请让我知道发生了什么事???
解决方案
推荐阅读
- react-native-maps - 覆盖组件的 React Native Maps 问题
- java - 从 Android 获取 gps 位置
- angular6 - 解析错误:App Initializer 中的循环依赖
- python-3.x - dnspython3 从 A 记录中删除主机
- tensorflow - Eager Execution 是否旨在取代 tensorflow 会话方法?
- r - 将闪亮的小部件输入值分配给矩阵/数据框
- fluentd - 从日志行中提取流利配置中的值以用作输出参数值的方法?
- kubernetes - 当leader pod死掉时,我们可以立即更新k8s的leader吗?
- android - 无法使用地理编码器获取状态
- powershell - 创建可能与 WinSCP 409 冲突部分存在的目录结构