代码之家  ›  专栏  ›  技术社区  ›  Brian Fleishman

我不能让我的按钮部件做任何事情

  •  1
  • Brian Fleishman  · 技术社区  · 15 年前

    我刚开始学安卓,想自学语言,结果遇到了一堵砖墙。

    我正在尝试编程一个非常简单的widge,它只是一个按钮。当按键按下时,手机进入静音模式。不幸的是,我能编程的唯一一件事就是弹出一条祝酒词。

    有人能告诉我我的错误吗?提前谢谢你。这是我的代码:

    package com.DoNotDisturb.widget;
    
    import com.DoNotDisturb.widget.R;
    
    import android.app.Notification;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.appwidget.AppWidgetManager;
    import android.appwidget.AppWidgetProvider;
    import android.content.Context;
    import android.content.Intent;
    import android.media.AudioManager;
    import android.util.Log;
    import android.widget.RemoteViews;
    import android.widget.Toast;
    
    public class DoNotDisturbWidget extends AppWidgetProvider {
    
        public static String ACTION_WIDGET_CONFIGURE = "ConfigureWidget";
        public static String ACTION_WIDGET_RECEIVER = "ActionReceiverWidget";
    
        @Override
        public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    
            RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
    
            Intent active = new Intent(context, DoNotDisturbWidget.class);
            active.setAction(ACTION_WIDGET_RECEIVER);
    
            active.putExtra("msg", "Phone is silent");
    
            PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
    
            remoteViews.setOnClickPendingIntent(R.id.button_one, actionPendingIntent);
    
            appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
        }
    
        @Override
        public void onReceive(Context context, Intent intent) {
    
            // v1.5 fix that doesn't call onDelete Action
            final String action = intent.getAction();
            if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {
                final int appWidgetId = intent.getExtras().getInt(
                        AppWidgetManager.EXTRA_APPWIDGET_ID,
                        AppWidgetManager.INVALID_APPWIDGET_ID);
    
                if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
                    this.onDeleted(context, new int[] { appWidgetId });
                }
            } else {
                // check, if our Action was called
                if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
                    String msg = "null";
                    try {
                        msg = intent.getStringExtra("msg");
                    } catch (NullPointerException e) {
                        Log.e("Error", "msg = null");
                    }
                    Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
    
                    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);
    
                    NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
                    Notification noty = new Notification(R.drawable.icon, "Do Not Disturb Feature Activated", System.currentTimeMillis());
    
                    noty.setLatestEventInfo(context, "Notice", msg, contentIntent);
                    notificationManager.notify(1, noty);
    
                } else {
                    // do nothing
                }
    
                super.onReceive(context, intent);
            }
        }
    
        private AudioManager getSystemService(String audioService) {
            // TODO Auto-generated method stub
            return null;
        }
    }
    
    0 回复  |  直到 11 年前