绑定到活动时,“自定义快速设置”图块仍处于不可用状态

杀虫剂

我正在尝试为我的应用程序添加一个自定义快速设置磁贴。我遵循了Google的示例代码/文档,但是遇到了一些问题。经过一段时间的搜索,我找不到任何解决方案。

当我运行我的应用程序时,该磁贴在快速设置托盘中可见,但仍处于不可用状态。

我需要与图块进行双向通信,即,当用户选择图块时,应用程序会做出响应,而当用户在应用程序内执行特定操作时,会切换图块UI。

问题似乎出在试图将我的自定义TileService绑定到我的类上时MainActivity-每当我绑定它时,都是当磁贴进入一致的不可用状态时。我似乎不知道为什么会这样,因为它已成功绑定。如果我不绑定它(即,只有一种命令应用程序进行平铺通信),则该平铺处于活动状态,并且应用程序会响应选择它。

最终,我进行绑定以获得对自定义TileService的引用,以便能够调用它的method toggleTileUI()我不希望使用单例或静态成员变量作为获取对我的服务的引用的解决方案。

这是我的东西AndroidManifest.xml

        <service
            android:name=".ConnectionQuickSettingsService"
            android:label="@string/quick_setting_tile_connect"
            android:icon="@drawable/tile_icon"
                android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
            <intent-filter>
                <action android:name="android.service.quicksettings.action.QS_TILE" />
            </intent-filter>
        </service>

这是我的ConnectionQuickSettingsService.java

@TargetApi(24)
public class ConnectionQuickSettingsService extends TileService {
    private static final String TAG = "ConnectionQuickSettingsService";
    private final IBinder mBinder = new LocalBinder();

    public class LocalBinder extends Binder {
            ConnectionQuickSettingsService getService() {
                return ConnectionQuickSettingsService.this;
            }
    }

    @Override
    public IBinder onBind(Intent i) {
        return mBinder;
    }

    @Override
    public void onTileAdded() {
        L.d(TAG, "onTileAdded()");
    }

    @Override
    public void onStartListening() {
        L.d(TAG, "onStartListening()");
    }

    @Override
    public void onClick() {
        L.d(TAG, "Quick Settings tile selected");
        toggleInAppSwitch();
        toggleTileUI();
    }

    private void toggleInAppSwitch() {
        doStuff();
    }

    public void toggleTileUI() {
        Tile tile = this.getQsTile();
        doStuffWithTile();
    }

}

最后(我的相关部分)MainActivity.java

@Override
protected void onStart() {
    super.onStart();
    Intent i = new Intent(this, ConnectionQuickSettingsService.class);
    bindService(i, mConnection, Context.BIND_AUTO_CREATE);
}

@Override
protected void onStop() {
    super.onStop();
    if (mBound) {
        unbindService(mConnection);
        mBound = false;
    }
}

private ServiceConnection mConnection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName className,
                                   IBinder service) {
        ConnectionQuickSettingsService.LocalBinder binder = (ConnectionQuickSettingsService.LocalBinder) service;
        mQSService = binder.getService();
        mBound = true;
        L.d(TAG, "Bound to QS service successfully");
}

    @Override
    public void onServiceDisconnected(ComponentName arg0) {
        mBound = false;
        L.d(TAG, "Disconnected from QS service");
    }
};

public void onOnOff(){
    L.d(TAG, "On/Off switch toggled");
    if (mBound) {
        mQSService.toggleTileUI();
    }
}

任何输入将不胜感激,谢谢!

常用软件

问题的一部分是您处于压倒性onBind()地位,这阻碍了AndroidTileService实现onBind(),从而阻碍了Android与您的Linux协同工作ConnectionQuickSettingsService我希望系统中的抱怨此消息的LogCat中会出现错误消息。

问题的另一部分是,您假定它getQsTile()可以在任意时间点工作。不会的

我建议您与图块查找其他交互模式,例如使用META_DATA_ACTIVE_TILErequestListeningState(),并摆脱您的BinderandonBind()方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spring Security 自定义登录表单重定向到资源不可用

发送自定义IQ时来自服务器的服务不可用响应

自定义UserManager在OAuthAuthorizationServerProvider中不可用

如何添加自定义“网页不可用”

节点服务处于活动状态(正在运行),但不可用

当SearchController处于活动状态时,CollectionView自定义单元不能正确更新

当“显示设置”中的分辨率不可用时,如何使用xrandr设置自定义分辨率

单击“自定义格式”文本时,TinyMCE 4.0+“自定义按钮”处于活动状态和非活动状态

解决方案标签在“自定义”下的“设置”标签中不可用,无法上传示例html文件

使用asmack设置状态不可用

当用户处于非活动状态时,如何隐藏我的自定义html5视频控件?

使用自定义模块创建NetSuite脚本时,获取“执行定义回调时所有SuiteScript API模块不可用”

启用ACTIVE_TILE时,启动时快速设置磁贴处于活动状态

是否可以在Flutter中创建自定义快速设置图块?

自定义yaml属性在服务类中不可用

Openshift自定义环境变量在Python中不可用

禁用用户登录后,向“此帐户当前不可用”的自定义消息

Serverless provider.environment 变量在自定义中不可用

全局对象在自定义模块中不可用,即使传入并请求也是如此

如何将网页不可用页面替换为自定义页面?(网络视图)

放入流后,我在node-red中的自定义节点不可用

模型不可用于ViewSettingsCustomItem中的自定义控件

Swift标签栏已隐藏,但自定义按钮仍处于活动状态

使用itext将html转换为pdf时,自定义字体在Windows中有效,但在Ubuntu中不可用

搜索栏处于活动状态时,快速表视图被锁定

自定义Google助手突然在设备上不可用,但在键入提示时有效

无法在自定义的AOSP上从Google Play安装某些应用:该项目不可用。原因:9

Boost Beast:当内容长度不可用时,如何使用自定义主体产生非块状响应?

ForEach 内部状态的自定义绑定