锁定任务模式Android 5.0 Launcher无法启动应用程序

时间:2017-08-16 12:52:34

标签: android android-launcher kiosk-mode device-owner

我正在使用设备所有者为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();
    }
}

如果禁用任务锁,电子邮件应用程序将启动。当任务锁开启时,它没有。

以前工作过。 你有什么想法,怎么可能?

如果您需要更多我的代码,请告诉我......

非常感谢! :)

0 个答案:

没有答案