我如何启动与民政窗口小部件的活动 [英] How Do I Launch an Activity with Home Widget

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

问题描述

  

可能重复:
  <一href="http://stackoverflow.com/questions/2706464/how-to-launch-activity-from-android-home-screen-widget">How从Android主屏幕小部件推出的活动

请告诉我最简单的code启动从应用程序的主界面窗口小部件的活动?

在code我至今不工作,并没有显示在LogCat中..?

该构件具有在它的形象,当图像被窃听,应当启动应用程序。寻找一个片段。

 公共类进myWidget扩展AppWidgetProvider
{
    //创建一个Intent从ImageView的发射活动
    @覆盖
    公共无效onEnabled(上下文的背景下)
    {
    意向意图=新的意图(Intent.ACTION_MAIN,NULL);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);

    组件名排版=新单元名(context.getPackageName(),MyWidget.class.getName());
    intent.setComponent(CN);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent myPI = PendingIntent.getActivity(上下文,0,意图,0);

    RemoteViews意见=新RemoteViews(context.getPackageName(),R.layout.content); //&LT; -THE布局W /我的MainActivity类?

    views.setOnClickPendingIntent(R.id.widgetLauncher,myPI); //&LT; -THE ImageView的ID?

    AppWidgetManager经理= AppWidgetManager.getInstance(上下文);
    mgr.updateAppWidget(样稿,意见);
    }
}
 

控件布局:

 &LT; RelativeLayout的的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:方向=垂直&GT;

    &LT; ImageView的
        机器人:ID =@ + ID / widgetLauncher
        机器人:layout_width =258dp
        机器人:layout_height =54dp
        机器人:layout_centerInParent =真
        机器人:SRC =@可绘制/ wgt_logo&GT;
    &LT; / ImageView的&GT;

&LT; / RelativeLayout的&GT;
 

解决方案

这最后的工作:

 公共类进myWidget扩展AppWidgetProvider
{
    //创建一个Intent推出活动
    @覆盖
    公共无效的OnUpdate(上下文的背景下,AppWidgetManager appWidgetManager,INT [] appWidgetIds)
    {
    super.onUpdate(背景下,appWidgetManager,appWidgetIds);

    RemoteViews remoteViews =新RemoteViews(context.getPackageName(),R.layout.home_widget);
    //当我们单击窗口小部件,我们要打开我们的主要活动。
    意图launchActivity =新的意图(背景下,MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(上下文,0,launchActivity,0);
    remoteViews.setOnClickPendingIntent(R.id.widget,pendingIntent);;

    组件名thisWidget =新的组件名(背景下,MyWidget.class);
    AppWidgetManager经理= AppWidgetManager.getInstance(上下文);
    manager.updateAppWidget(thisWidget,remoteViews);
    }
}
 

Possible Duplicate:
How to launch activity from android home screen widget

Whats the simplest code to launch an activity from the applications home-screen widget?

The code I have so far doesnt work and nothing shows in LogCat..??

The widget has an image within it and when the image is tapped, should launch the application. Looking for a snippet.

public class MyWidget extends AppWidgetProvider
{
    // Create an Intent to launch activity from ImageView
    @Override
    public void onEnabled(Context context)
    {
    Intent intent = new Intent(Intent.ACTION_MAIN, null);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);

    ComponentName comp = new ComponentName(context.getPackageName(),MyWidget.class.getName());
    intent.setComponent(cn);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent myPI = PendingIntent.getActivity(context, 0, intent, 0);

    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.content);//<-THE LAYOUT W/I THE MainActivity CLASS??

    views.setOnClickPendingIntent(R.id.widgetLauncher, myPI);//<-THE IMAGEVIEW ID??

    AppWidgetManager mgr = AppWidgetManager.getInstance(context);
    mgr.updateAppWidget(comp, views);
    }
}

Widget Layout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/widgetLauncher"
        android:layout_width="258dp"
        android:layout_height="54dp"
        android:layout_centerInParent="true"
        android:src="@drawable/wgt_logo" >
    </ImageView>

</RelativeLayout>

解决方案

This finally worked:

public class MyWidget extends AppWidgetProvider
{
    // Create an Intent to launch activity
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds)
    {
    super.onUpdate(context, appWidgetManager, appWidgetIds);

    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.home_widget);
    // When we click the widget, we want to open our main activity.
    Intent launchActivity = new Intent(context, MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, launchActivity, 0);
    remoteViews.setOnClickPendingIntent(R.id.widget, pendingIntent);;

    ComponentName thisWidget = new ComponentName(context, MyWidget.class);
    AppWidgetManager manager = AppWidgetManager.getInstance(context);
    manager.updateAppWidget(thisWidget, remoteViews);
    }
}

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

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