我该如何开始的活动我的窗口小部件被点击? [英] How do I start an Activity when my Widget is clicked?
本文介绍了我该如何开始的活动我的窗口小部件被点击?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个小部件,切换声音关上,而是那我想打电话给另一个活动(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屋!
查看全文