在索尼智能手表2的控制扩展中,我可以通过onkey接收回密钥,但如何防止扩展终止?我想用钩子键做一些处理,但按back键终止扩展。
在SampleAdvancedControlExtension中,它似乎通过启动新控件来阻止后退按钮,但我只使用单个控件。

public void onKey(int action, int keyCode, long timeStamp) {
    Log.v(SampleExtensionService.LOG_TAG, "onKey");

    if (action == Control.Intents.KEY_ACTION_RELEASE
            && keyCode == Control.KeyCodes.KEYCODE_BACK) {
        Log.d(SampleExtensionService.LOG_TAG, "onKey() - back button intercepted.");
        onBack();
    } else if (mCurrentControl != null) {
        super.onKey(action, keyCode, timeStamp);
    }
}

/**
 * Closes the currently open control extension. If there is a control on the
 * back stack it is opened, otherwise extension is closed.
 */
public void onBack() {
    Log.v(SampleExtensionService.LOG_TAG, "onBack");
    if (!mControlStack.isEmpty()) {
        Intent backControl = mControlStack.pop();
        ControlExtension newControl = createControl(backControl);
        startControl(newControl);
    } else {
        stopRequest();
    }
}

好吧,我找到问题了。我必须在注册信息类中添加以下方法。
@Override
public boolean controlInterceptsBackButton() {
    // Extension has it's own navigation, handles back presses.
    return true;
}

最佳答案

在“onback()”方法中,对“stoprequest()”的调用是终止扩展的调用。
在您的例子中,您应该将自己的逻辑放在这个方法中,这样如果您不需要“stoprequest()”就不会被调用。

关于android - 索尼SmartWatch 2:后退键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19555150/

10-11 00:01