Android Widget Onclick 按钮或方法或来自另一个 Activity 的方法?

标签 android methods widget

我有一个带小部件的普通应用程序(小部件是一个图像按钮)。单击小部件时,我想从 MainActivity 调用方法或从 WidgetProvider Activity 调用方法或将 onClick 附加到小部件当我点击它时做一些事情。我已阅读文档,但我唯一发现的是如何使用小部件打开 Activity 。

我的 WidgetProvider Activity 代码:

package ali.simpleflaslight;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.hardware.Camera;
import android.media.MediaPlayer;
import android.net.Uri;
import android.widget.ImageButton;
import android.widget.RemoteViews;

public class WidgetProvider extends AppWidgetProvider {

  public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    final int N = appWidgetIds.length;

    // Perform this loop procedure for each App Widget that belongs to this provider
    for (int i = 0; i < N; i++) {
      int appWidgetId = appWidgetIds[i];

      // Create an Intent to launch ExampleActivity
      Intent intent = new Intent(context, MainActivity.class);
      PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

      // Get the layout for the App Widget and attach an on-click listener
      // to the button
      RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_layout);
      views.setOnClickPendingIntent(R.id.imageButton, pendingIntent);

      // Tell the AppWidgetManager to perform an update on the current app widget
      appWidgetManager.updateAppWidget(appWidgetId, views);
    }
  }
  public void someMethod() {
    //I want this method called when imagebutton is pressed.
  }
}

使用上面的代码,单击小部件只会显示我的 MainActivity

最佳答案

AndroidManifest.xml 添加一个 Action 文件在 <receiver><intent-filter>标签:

<action android:name="MY_PACKAGE_NAME.WIDGET_BUTTON" />

声明:

public static String WIDGET_BUTTON = "MY_PACKAGE_NAME.WIDGET_BUTTON";

onUpdate()方法添加一个与操作匹配的未决 Intent :

Intent intent = new Intent(WIDGET_BUTTON);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.MY_BUTTON_ID, pendingIntent);

最后,在onRecieve()方法中:

 if (WIDGET_BUTTON.equals(intent.getAction())) {
   //Your Code

 }

关于Android Widget Onclick 按钮或方法或来自另一个 Activity 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30146199/

相关文章:

c++ - Qt 小部件大小在运行时重新计算

android - 如何在 Android Studio 中完全禁用 NDK 支持

java - 简单的平均误差,找不到正确的代码

python - Django 表单不渲染小部件

Python 类最佳实践

python - 如何在 CPython 2.7.2 中停用方法缓存?

java - 在 SWT 文本字段中选择/标记特定单词

android - AdMob AdView 和 ViewPager?

android - 是否通过采样率记录音频循环?

android - Android 上有类似 cron 的东西吗?