当我将手机插入DeX底座时,我的应用程序窗口在DeX任务栏中被最小化。这是默认行为。
我正在使用运行DeX 2.5的Galaxy S8。
我希望我的应用程序在插入DeX时立即显示(全屏或窗口)。
到目前为止我尝试过的(根据advice on the Samsung DeX website)...
1 - 我已应用清单meta-data
,使应用程序进程保持活动状态:
<meta-data
android:name="com.samsung.android.keepalive.density"
android:value="true"/>
2 - 我已应用configChanges
属性来拦截配置更改:
android:configChanges="orientation|screenSize|smallestScreenSize|density|screenLayout|uiMode|keyboard|keyboardHidden|navigation"
当设备旋转时,或者在DeX界面中调整屏幕大小,即Activity.onConfigurationChanged(Configuration)
运行时,这可以正常工作。
但这并不是通过将手机插入DeX而触发的。
3 - 我的活动已设置为在清单中调整大小:
android:resizeableActivity="true"
android:supportsPictureInPicture="true"
当设备与DeX对接或脱离时,系统会广播以下意图:
android.app.action.ENTER_KNOX_DESKTOP_MODE
android.app.action.EXIT_KNOX_DESKTOP_MODE
任何应用都可以在清单中注册接收器,以便在设备停靠时收到通知:
<receiver android:name=".DexReceiver">
<intent-filter>
<action android:name="android.app.action.ENTER_KNOX_DESKTOP_MODE"/>
</intent-filter>
</receiver>
在接收器内部,应用程序可以重新启动。
public void onReceive(Context context, Intent intent) {
Intent relaunch = context.getPackageManager().getLaunchIntentForPackage(BuildConfig.APPLICATION_ID);
relaunch.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(relaunch);
}
这会导致应用程序在停靠时在正常窗口中启动。
为确保全屏启动,清单中有2项更改。
1)在meta-data
区块内添加DeX application
:
<!--DeX FULL SCREEN LAUNCH SIZE-->
<meta-data
android:name="com.samsung.android.dex.launchwidth"
android:value="0"/>
<meta-data
android:name="com.samsung.android.dex.launchheight"
android:value="0"/>
这里0
值告诉DeX使用可能的最大宽度/高度。
2)在正在发射的layout
上添加一个activity
块:
<!--USE BIG ENOUGH DIMENSIONS TO FORCE FULL-SCREEN ON LAUNCH-->
<layout
android:defaultWidth="5000dp"
android:defaultHeight="5000dp"
android:gravity="center"/>
这里的5000dp
值必须大于插入DeX的屏幕。
三星在不同的地方推荐两种发射尺寸模块 - 我的经验是第二种选择适用于S8(DeX v2.5)。