【问题标题】:Communication between activity/service and widget provider?活动/服务和小部件提供者之间的通信?
【发布时间】:2018-10-10 11:37:04
【问题描述】:

我的应用有一个小部件,当用户单击小部件上的按钮时,它有 4 个按钮,我必须向连接的蓝牙发送一些代码。在我的蓝牙服务类中,我正在传递蓝牙 Mac 地址以连接外部蓝牙设备。 如何在服务和小部件或小部件之间进行通信以在 android 中进行活动。 如果我使用 getService 我的蓝牙会断开连接。 有没有办法调用appWidgetProvider类中的服务方法或活动方法

【问题讨论】:

    标签: android android-widget android-pendingintent android-appwidget


    【解决方案1】:

    您可以在 appWidgetProvider 中做的最好的事情是通过意图向您的服务/活动发送消息。您可以使用支持库 v4 中的 LocalBroadcastManager 仅在您的应用程序内部广播消息。 示例:

    @Override
    public void onCreate(Bundle savedInstanceState) {
    
      ...
    
      // Register to receive messages.
      // We are registering an observer (mMessageReceiver) to receive Intents
      // with actions named "custom-event-name".
      LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
          new IntentFilter("custom-event-name"));
    }
    
    // Our handler for received Intents. This will be called whenever an Intent
    // with an action named "custom-event-name" is broadcasted.
    private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
        // Get extra data included in the Intent
        String message = intent.getStringExtra("message");
        Log.d("receiver", "Got message: " + message);
      }
    };
    
    @Override
    protected void onDestroy() {
      // Unregister since the activity is about to be closed.
      LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
      super.onDestroy();
    }
    

    在您的小部件提供程序中:

    private void sendMessage() {
      Log.d("sender", "Broadcasting message");
      Intent intent = new Intent("custom-event-name");
      // You can also include some extra data.
      intent.putExtra("message", "This is my message!");
      LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
    }
    

    【讨论】:

    • 我可以在通知布局(远程视图)中使用此代码吗?
    • 你是如何触发sendMessage()的?来自AppWidgetProvider.onUpdate() 内?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多