我该如何开始的活动我的窗口小部件被点击? [英] How do I start an Activity when my Widget is clicked?

查看:97
本文介绍了我该如何开始的活动我的窗口小部件被点击?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个小部件,切换声音关上,而是那我想打电话给另一个活动(MYxz.class),请告诉我,我应该在这里改变...

 公共类AppWidget扩展AppWidgetProvider {

 @覆盖
 公共无效的onReceive(上下文ctxt,意图意图)
 {
      如果(intent.getAction()== NULL)
      {
          ctxt.startService(新意图(ctxt,ToggleService.class));
      }
   其他
      {
    super.onReceive(ctxt,意图);
}

}

   @覆盖
  公共无效的OnUpdate(上下文的背景下,AppWidgetManager appWidgetManager,INT [] appWidgetIds)
  {
context.startService(新意图(背景下,ToggleService.class));
// RemoteViews buildUpdate(上下文);
   }

  公共静态类ToggleService扩展IntentService
   {
公共ToggleService(){
    超(AppWidget $ ToggleService);

    }



    @覆盖
    保护无效onHandleIntent(意向意图)
 {
   组件名我=新的组件名(本,AppWidget.class);
  AppWidgetManager经理= AppWidgetManager.getInstance(本);
  mgr.updateAppWidget(我,buildUpdate(本));
 }

 私人RemoteViews buildUpdate(上下文的背景下)
{
RemoteViews updateViews =新RemoteViews(context.getPackageName(),R.layout.widget);
AudioManager audioManager =(AudioManager)context.getSystemService(Activity.AUDIO_SERVICE);
如果(audioManager.getRingerMode()== AudioManager.RINGER_MODE_SILENT)
{
    updateViews.setImageViewResource(R.id.phoneState,R.drawable.silent);
    audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

}
其他 {
    updateViews.setImageViewResource(R.id.phoneState,R.drawable.phone123);
    audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

}
意图I =新的意图(这一点,AppWidget.class);
PendingIntent圆周率= PendingIntent.getBroadcast(上下文,0,I,0);
updateViews.setOnClickPendingIntent(R.id.phoneState,PI);
返回updateViews;
}

 }
}
 

解决方案

相反的:

 意图激活=新的意图(paramContext,AppWidget.class);
 

您使用:

 意图激活=新的意图(paramContext,YOURCLASS.class);
 

您创建挂起的意图之前,@imran汗帮了我,但也有一些调整,你应该做2 ...这应该火起来的活动你所需要的。

I have this widget that toggles sound on off but instead of that I want to call another activity (MYxz.class) please tell me what should I change here...

  public class AppWidget extends AppWidgetProvider {

 @Override
 public void onReceive(Context ctxt, Intent intent)
 {
      if(intent.getAction()==null)
      {
          ctxt.startService(new Intent(ctxt,ToggleService.class));
      }
   else
      {
    super.onReceive(ctxt, intent);
}

}

   @Override
  public void onUpdate(Context context,AppWidgetManager appWidgetManager, int [] appWidgetIds)
  {
context.startService(new Intent(context,ToggleService.class));
//RemoteViews buildUpdate(context);
   }

  public static class ToggleService extends IntentService
   {
public ToggleService() {
    super("AppWidget$ToggleService");

    }



    @Override
    protected void onHandleIntent(Intent intent)
 {
   ComponentName me = new ComponentName(this,AppWidget.class);
  AppWidgetManager mgr= AppWidgetManager.getInstance(this);
  mgr.updateAppWidget(me,buildUpdate(this));
 }

 private RemoteViews buildUpdate(Context context)
{
RemoteViews updateViews=new RemoteViews(context.getPackageName(),R.layout.widget);
AudioManager audioManager=(AudioManager)context.getSystemService(Activity.AUDIO_SERVICE);
if(audioManager.getRingerMode()==AudioManager.RINGER_MODE_SILENT)
{
    updateViews.setImageViewResource(R.id.phoneState,R.drawable.silent);
    audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

}
else {
    updateViews.setImageViewResource(R.id.phoneState,R.drawable.phone123);
    audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

}
Intent i=new Intent(this, AppWidget.class);
PendingIntent pi= PendingIntent.getBroadcast(context,0, i,0);
updateViews.setOnClickPendingIntent(R.id.phoneState,pi);
return updateViews;
}

 }
}

解决方案

Instead of:

Intent active = new Intent(paramContext, AppWidget.class);

You use:

Intent active = new Intent(paramContext, YOURCLASS.class); 

before you create the pending intent, @imran khan helped me but there are some tweaks you should do 2...this should fire up the Activity you need.

这篇关于我该如何开始的活动我的窗口小部件被点击?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆