我正在使用设备所有者为Android 5+构建一个Launcher-Kiosk应用程序(> = API 21),设置设备,管理允许使用的应用列表,自动启动Kiosk。应用程序位于GridView中。用户点击一个应用图标,就会启动该应用。
到目前为止一切顺利。
但是,从本周末开始,当我处于自助服务终端模式时,应用程序就无法启动。启动器没问题,如果我禁用自助服务终端模式,应用程序就会启动。
它不再适用于Android 5(6+可以)。使用API 21在不同设备和仿真器上尝试。
我多次查看了我的应用的源代码。周末没什么变化。我已经尝试过以前版本的代码,它已不再适用了。
我尝试了this example,添加了一个启动应用的按钮,并在PackageName
中添加了setLockTaskPackages
。不工作。
即使是Test-DPC也不允许没有API 23+(Android M)的自助服务终端模式
我创建了一个新的Android项目,只是为了尝试没有我的其余代码,也没有工作。以下是代码(简单的新项目,其中一个按钮用于启动应用,应用通过adb设置为设备所有者):
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button) findViewById(R.id.button1);
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
final String[] kioskApps = new String[2];
kioskApps[0] = getPackageName();
kioskApps[1] = "com.android.email";
ComponentName deviceAdmin = new ComponentName(this, DeviceOwnerReceiver.class);
assert dpm != null;
dpm.setLockTaskPackages(deviceAdmin, kioskApps);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent launchIntent = getPackageManager().getLaunchIntentForPackage(kioskApps[1]);
if (launchIntent != null) {
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(launchIntent);//null pointer check in case package name was not found
}
}
});
startLockTask();
}
}
如果禁用任务锁,电子邮件应用程序将启动。当任务锁开启时,它没有。
以前工作过。 你有什么想法,怎么可能?
如果您需要更多我的代码,请告诉我......
非常感谢! :)