2015-06-21 6 views
0

Я пытаюсь создать виджет мира привет, и я выполнил три разных примера, и каждый раз, когда apk загружает основное действие как приложение, а не виджет. В последнем примере он показал манифест без блока активности. Когда я выхожу из основной манифестации из основного манифеста и просто получаю блок приемника, Android Studio выдает исключение активности по умолчанию, которая не найдена. Так вот в чем состоит одно отличие от примера. У меня есть блок < * activity в манифесте.Виджет загружается как приложение

Я в Android Studio 1.0.2. Что может быть причиной этого?

Мой текущий код основан на этом примере http://www.vogella.com/tutorials/AndroidWidgets/article.html

http://www.sitepoint.com/how-to-code-an-android-widget/

https://looksok.wordpress.com/2012/12/15/android-complete-widget-tutorial-including-source-code/

AndroidMainfest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.me.countdown" > 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

    </activity> 
    <receiver android:name="MyWidgetProvider" > 
     <intent-filter > 
      <action 
       android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
     </intent-filter> 

     <meta-data 
      android:name="android.appwidget.provider" 
      android:resource="@xml/widget_info" /> 
    </receiver> 
</application> 

</manifest> 

MyWidgetProvider.xml

public class MyWidgetProvider extends AppWidgetProvider { 

private static final String ACTION_CLICK = "ACTION_CLICK"; 

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
        int[] appWidgetIds) { 

    // Get all ids 
    ComponentName thisWidget = new ComponentName(context, 
      MyWidgetProvider.class); 
    int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget); 
    for (int widgetId : allWidgetIds) { 
     // create some random data 
     int number = (new Random().nextInt(100)); 

     RemoteViews remoteViews = new RemoteViews(context.getPackageName(), 
       R.layout.widget_layout); 
     Log.w("WidgetExample", String.valueOf(number)); 
     // Set the text 
     remoteViews.setTextViewText(R.id.update, String.valueOf(number)); 

     // Register an onClickListener 
     Intent intent = new Intent(context, MyWidgetProvider.class); 

     intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); 
     intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds); 

     PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 
       0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
     remoteViews.setOnClickPendingIntent(R.id.update, pendingIntent); 
     appWidgetManager.updateAppWidget(widgetId, remoteViews); 
    } 
} 
} 

widget_info.xml под Рез/XML

\<?xml version="1.0" encoding="utf-8"?> 
<appwidget-provider 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:initialLayout="@layout/widget_layout" 
android:minHeight="72dp" 
android:minWidth="300dp" 
android:updatePeriodMillis="300000" > 

</appwidget-provider> 

ответ

0

Я не уверен, что эти и другие примеры предназначены для, но версия Android Studio Я использую - 1.2.2 - делает это по-другому , Я нашел пример ниже и смог получить рабочую оболочку виджета, чего я хотел. Даже этому требовалось много мелких настроек, прежде чем он будет компилироваться и запускаться, но я все понял.

Грег

http://www.clearcreekcode.com/create-a-widget-in-android-studio/

Смежные вопросы