Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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 将小部件放到屏幕上后启动活动_Android_Android Appwidget - Fatal编程技术网

Android 将小部件放到屏幕上后启动活动

Android 将小部件放到屏幕上后启动活动,android,android-appwidget,Android,Android Appwidget,我遇到了一个问题: 我想在将小部件放到屏幕上之后启动ChooseWidgetActivity 我在WidgetProvider中对onUpdate进行了如下编码: @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { final int N = appWidgetIds.length; for (int i = 0; i &

我遇到了一个问题: 我想在将小部件放到屏幕上之后启动ChooseWidgetActivity

我在WidgetProvider中对onUpdate进行了如下编码:

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    final int N = appWidgetIds.length;

    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];

        //--- I'm starting activity here:
        Intent intent = new Intent(context, WidgetChooseActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
        //---

        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

        RemoteViews views = new RemoteViews(context.getPackageName(),
                R.layout.widget_layout_icon);
        views.setOnClickPendingIntent(R.id.widgetIcon, pendingIntent);

        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
@覆盖
公共void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,int[]AppWidgetId){
final int N=appWidgetIds.length;
对于(int i=0;i
但我唯一得到的是WidgetChooseActivity,它在从widgets屏幕选择widget之后立即启动。我不能将它放在屏幕上,因为我的活动盖过了android主屏幕。
在将小部件放到屏幕上之后,是否可以启动活动?

是的,您可以为此使用处理程序

 Handler handler = new Handler(); 

        handler.postDelayed(new Runnable() { 
             public void run() {  


                 try {
                    // here write down the code  

                }  catch (ExecutionException e) {

                    e.printStackTrace();
                } 

             }  
        }, 2000);

是的,您可以为此使用处理程序

 Handler handler = new Handler(); 

        handler.postDelayed(new Runnable() { 
             public void run() {  


                 try {
                    // here write down the code  

                }  catch (ExecutionException e) {

                    e.printStackTrace();
                } 

             }  
        }, 2000);

不久前,我想出了一个解决问题的方法……要在将小部件放到屏幕上之后开始一些活动,在清单中定义它就足够了,例如:

<activity android:name=".MyWidgetConfigurationActivity">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
    </intent-filter>
</activity>
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:configure=".MyWidgetConfigurationActivity"
    android:initialLayout="@layout/widget_layout"
    android:minHeight="80dp"
    android:minWidth="80dp"
    android:updatePeriodMillis="30000" />

并在AppWidgetProviderInfo元数据中添加android:configure项,例如:

<activity android:name=".MyWidgetConfigurationActivity">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
    </intent-filter>
</activity>
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:configure=".MyWidgetConfigurationActivity"
    android:initialLayout="@layout/widget_layout"
    android:minHeight="80dp"
    android:minWidth="80dp"
    android:updatePeriodMillis="30000" />

不久前,我想出了一个解决问题的方法……要在将小部件放到屏幕上之后开始一些活动,就可以在清单中定义它,并使用特殊目的过滤器,例如:

<activity android:name=".MyWidgetConfigurationActivity">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
    </intent-filter>
</activity>
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:configure=".MyWidgetConfigurationActivity"
    android:initialLayout="@layout/widget_layout"
    android:minHeight="80dp"
    android:minWidth="80dp"
    android:updatePeriodMillis="30000" />

并在AppWidgetProviderInfo元数据中添加android:configure项,例如:

<activity android:name=".MyWidgetConfigurationActivity">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
    </intent-filter>
</activity>
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:configure=".MyWidgetConfigurationActivity"
    android:initialLayout="@layout/widget_layout"
    android:minHeight="80dp"
    android:minWidth="80dp"
    android:updatePeriodMillis="30000" />


答案正确吗?我想他想延迟显示
活动
,直到用户将项目放到屏幕上(比如Gmail小部件)-不要延迟它,因为如果用户持有小部件太长时间,并且
活动
不知从哪里冒出来,我们会有奇怪的动作。@jeet这并不能完全解决我的问题,因为用户总是有指定的时间将小部件放在主屏幕上。如果这个时间到了,用户仍然持有小部件-myActivity遮挡主屏幕并放置widget on it变得不可能..答案正确吗?我想他想延迟显示
活动
,直到用户将项目放在屏幕上(比如Gmail widget)-不要延迟它,因为如果用户持有小部件太长时间,并且
活动
不知从哪里冒出来,我们会有奇怪的动作。@jeet这并不能完全解决我的问题,因为用户总是有指定的时间将小部件放在主屏幕上。如果这个时间到了,用户仍然持有小部件-myActivity遮挡主屏幕并放置widge这件事变得不可能了。。