Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中从widget打开应用程序?_Android_Android Widget - Fatal编程技术网

如何在Android中从widget打开应用程序?

如何在Android中从widget打开应用程序?,android,android-widget,Android,Android Widget,当我们当时点击小部件时,我需要打开一个活动屏幕(或应用程序)。如何做到这一点?您需要在小部件上设置OnClickPendingEvent Intent intent = new Intent(context, ExampleActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); // Get the layout for the App Widget and

当我们当时点击小部件时,我需要打开一个活动屏幕(或应用程序)。如何做到这一点?

您需要在小部件上设置OnClickPendingEvent

Intent intent = new Intent(context, ExampleActivity.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_provider_layout);
views.setOnClickPendingIntent(R.id.button, pendingIntent);
看看这个


应用程序小部件的Android开发者页面提供了相关信息和一个完整的示例:

将此代码包含在yout WidgetProvider类的onUpdate()方法中

for(int j=0;j
使用Kotlin

您需要在单击小部件视图时添加
pendingent

remoteViews.setOnClickPendingIntent(R.id.widgetRoot, 
               PendingIntent.getActivity(context, 0, Intent(context, MainActivity::class.java), 0))
其中widgetRoot是我的小部件的父级的id
ViewGroup

更新时进入

挂起的意图通常添加在更新回调中

    override fun onUpdate(
        context: Context,
        appWidgetManager: AppWidgetManager,
        appWidgetIds: IntArray) {

        // There may be multiple widgets active, so update all of them
        val widgetIds = appWidgetManager.getAppWidgetIds( ComponentName(context, ClockWidget::class.java))
        for (appWidgetId in widgetIds) {

                // Construct the RemoteViews object
                val remoteViews = RemoteViews(context.packageName, R.layout.clock_widget)

               //Open App on Widget Click
                remoteViews.setOnClickPendingIntent(R.id.weatherRoot,  
   PendingIntent.getActivity(context, 0, Intent(context, MainActivity::class.java), 0))

                //Update Widget 
                remoteViews.setTextViewText(R.id.appWidgetText, Date().toString())
                appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
            }
        }
    }
非常简单(在xamarin c#android mono中):


附带问题,您能否提取特定应用程序的活动?(也许我不知道什么课是ExampleActivity.class)谁投票支持这个非理性?答案在哪里?这家伙问“如何从窗口小部件按钮打开应用程序”而不是“如何在窗口小部件按钮上设置操作”“您的应用程序包”“应用程序主要活动的完全限定名称”的意思是
intent.setComponent(新组件名(context.getPackageName(),MainActivity.class.getName());
    override fun onUpdate(
        context: Context,
        appWidgetManager: AppWidgetManager,
        appWidgetIds: IntArray) {

        // There may be multiple widgets active, so update all of them
        val widgetIds = appWidgetManager.getAppWidgetIds( ComponentName(context, ClockWidget::class.java))
        for (appWidgetId in widgetIds) {

                // Construct the RemoteViews object
                val remoteViews = RemoteViews(context.packageName, R.layout.clock_widget)

               //Open App on Widget Click
                remoteViews.setOnClickPendingIntent(R.id.weatherRoot,  
   PendingIntent.getActivity(context, 0, Intent(context, MainActivity::class.java), 0))

                //Update Widget 
                remoteViews.setTextViewText(R.id.appWidgetText, Date().toString())
                appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
            }
        }
    }
public override void OnReceive(Context context, Intent intent)
        {
            if (ViewClick.Equals(intent.Action))
            {
                var pm = context.PackageManager;
                try
                {
                    var packageName = "com.companyname.YOURPACKAGENAME";
                    var launchIntent = pm.GetLaunchIntentForPackage(packageName);
                    context.StartActivity(launchIntent);
                }
                catch
                {
                    // Something went wrong :)
                }
            }
            base.OnReceive(context, intent);

        }