标签: android-appwidget

AppWidget中的ProgressBar

我在App Widget中使用ProgressBar遇到了一个有趣的情况......文档(http://developer.android.com/guide/topics/appwidgets/index.html)说ProgressBar是一个受支持的widget类. .

我没有问题让ProgressBar显示在我的App Widget中,但问题是我希望它只在后台处理发生时显示为用户的视觉反馈.

在ImageViews上我通过RemoteViews.setViewVisibility()完成此操作,一切正常.但是,使用ProgressBar,我得到一个异常,说ProgressBar不能使用此方法.

这是故意还是这个错误?有没有办法解决这个问题?

android progress-bar android-appwidget

7
推荐指数
2
解决办法
5697
查看次数

自动屏幕旋转禁用小组件RemoteView onClick事件

我有一个奇怪的错误与我编码的小部件 - 在屏幕旋转后小部件停止响应onClick事件.代码与此处的 App Widgets的Android开发人员文档完全相同.我注意到市场上的其他小部件没有这个问题 - 是否有一个已知的解决方法?我已经尝试在旋转后遍布整个地方,所以我不认为它的onClickPendingIntent在旋转后没有被调整大小; 它似乎根本不存在.

我无法找到一个onRotation()类型的触发器,AppWidgetProvider在旋转的情况下重做监听代码,所以我很不确定如何继续...

谢谢!

android android-appwidget

7
推荐指数
1
解决办法
3083
查看次数

如何获取已安装的小部件列表?

我正在尝试阅读Android上可用的主屏幕小部件列表.我可以使用可用的应用程序列表填充网格

Intent myIntent = new Intent(Intent.ACTION_MAIN, null);
myIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> appsInfo = MyActivity.getPackageManager().queryIntentActivities(myIntent, 0);
Run Code Online (Sandbox Code Playgroud)

而不是遍历每个ResolveInfo.
如何使用可用的主屏幕小部件进行相同的操作?我想用一个显示的相同列表填充一个网格,继续触摸屏幕并从显示的弹出窗口中选择"小部件".

android android-appwidget

7
推荐指数
2
解决办法
5763
查看次数

UpdateAppWidget Null指针异常

以下是更新appwidget的静态方法:

    public static void updateAppWidget(Context context, int id, WALL_POST_DETAILS post){
    try{
        System.out.println("In updateAppWidget==>"+id);
        AppWidgetManager mngr=AppWidgetManager.getInstance(context);

        String diff=diff(post.created_time.trim());

        RemoteViews views=new RemoteViews(context.getPackageName(),R.layout.widget_layout);         
        PendingIntent pending=PendingIntent.getActivity(context, 0, new Intent(context,ShareDialogActivity.class), 0);
        views.setOnClickPendingIntent(R.id.TextView01, pending);
        views.setOnClickPendingIntent(R.id.Button03, pending);

        views.setTextViewText(R.id.actor_name, post.actor_name);
        views.setTextViewText(R.id.actor_message, post.message);
        views.setImageViewBitmap(R.id.actor_photo, post.image);
        views.setTextViewText(R.id.created_time, diff);
        if(post.no_of_comments>0){
            views.setViewVisibility(R.id.comments_image, View.VISIBLE);
            views.setViewVisibility(R.id.comment_word, View.VISIBLE);               
            views.setTextViewText(R.id.no_of_comments, String.valueOf(post.no_of_comments));
            views.setViewVisibility(R.id.no_of_comments, View.VISIBLE);
            System.out.println("No. of Comments==>"+post.no_of_comments);
        }else{
            views.setViewVisibility(R.id.comments_image, View.INVISIBLE);
            views.setViewVisibility(R.id.comment_word, View.INVISIBLE);
            views.setTextViewText(R.id.no_of_comments, String.valueOf(""));
            views.setViewVisibility(R.id.no_of_comments, View.INVISIBLE);
        }

        if(post.no_of_likes>0){
            views.setViewVisibility(R.id.likes_image, View.VISIBLE);
            views.setViewVisibility(R.id.likes_word, View.VISIBLE);
            views.setTextViewText(R.id.no_of_likes, String.valueOf(post.no_of_likes));
            views.setViewVisibility(R.id.no_of_likes, View.VISIBLE);
        }else{
            views.setViewVisibility(R.id.likes_image, View.INVISIBLE);
            views.setViewVisibility(R.id.likes_word, View.INVISIBLE);
            views.setTextViewText(R.id.no_of_likes, String.valueOf(""));
            views.setViewVisibility(R.id.no_of_likes, View.INVISIBLE);
        }

        Intent …
Run Code Online (Sandbox Code Playgroud)

android android-appwidget

7
推荐指数
1
解决办法
2774
查看次数

Widget中的图像

我正在尝试在onUpdate中的窗口小部件布局中的图像视图中设置图像,但图像未更新

 @Override
     public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) 
     {
         Log.i(TAG, "onUpdate called");
         for (int appWidgetId : appWidgetIds) 
         {
             Bitmap bitmap=ImageUtils.getBitmap(context, appWidgetId);
             RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.widget);

             remoteView.setImageViewBitmap(R.id.imgView,bitmap);
             appWidgetManager.updateAppWidget(appWidgetId, remoteView);
         }
     }
Run Code Online (Sandbox Code Playgroud)

小部件的xml布局

<LinearLayout 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/imgView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/ic_launcher" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

清单文件

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.demo.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>
         <activity
             android:name=".WidgetConfig"
             android:label="@string/app_name" >
             <intent-filter>
                  <action
                    android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
             </intent-filter>
         </activity>
        <receiver
            android:name="BasicWidgetProvider"> …
Run Code Online (Sandbox Code Playgroud)

android android-widget remoteview appwidgetprovider android-appwidget

7
推荐指数
1
解决办法
1784
查看次数

在棉花糖升级后,appwidget listview行不会更新或加载

我有一个小部件应用程序,没有问题Android Lollipop或较低的操作系统.当我将nexus 5升级到Marshmallow(android 6.0)时,我意识到我的小部件在加载自定义行列表视图时遇到问题.Widget有一个动态textView和一个动态listView.textView工作得很好; 但是listView行项目没有希望.当我添加小部件时,行处于加载阶段.它与Lollipop或更低版本的设备完全相同,但不适用于Marshmallow.我相信棉花糖正在引发一个我无法找到它的问题.我希望有人告诉我我做错了什么并帮助我解决这个问题.我很感激所有的帮助.谢谢.

WidgetProvider.class:

@Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        System.out.println("WidgetProvider.onUpdate()");

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        final boolean isMaviKart = MainUtils.getCardType(context).equals(Constants.CARD_TYPE_MAVI);

        try {
            //set widget id
            ComponentName thisWidget = new ComponentName(context, WidgetProvider.class);
            int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
            MainUtils.setWidgetID(prefs, allWidgetIds[allWidgetIds.length - 1]);

            for (int i = 0; i < appWidgetIds.length; i++) {
                Intent intentService = new Intent(context, WidgetService.class);

                intentService.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
                intentService.setData(Uri.parse(intentService.toUri(Intent.URI_INTENT_SCHEME)));

                RemoteViews widget = new RemoteViews(context.getPackageName(), R.layout.widget);
                widget.setRemoteAdapter(appWidgetIds[i], R.id.list_view, intentService);

                Intent clickIntent = new Intent(context, MainActivity.class);
                PendingIntent …
Run Code Online (Sandbox Code Playgroud)

android android-widget appwidgetprovider android-appwidget android-6.0-marshmallow

7
推荐指数
1
解决办法
805
查看次数

Android appwidget没有显示

看起来像我的#$#%$%#$接收器不是清单中的应用程序元素

你好

我刚刚创建了helloworld appwidget以了解它的工作原理.我在adroid开发站点上关注了dev示例.但由于某种原因,小部件不希望在小部件列表中显示.

AndroidManifest.xml中

 <receiver android:name="VoiceRIAWidget" android:label="Voice RIA">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>
        <meta-data android:name="android.appwidget.provider"
            android:resource="@xml/appwidget_info" />
    </receiver>
Run Code Online (Sandbox Code Playgroud)

appwidget_info.xml

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="Voice RIA" android:minWidth="50dp" android:minHeight="50dp"
    android:updatePeriodMillis="86400000" android:initialLayout="@layout/appwidget">
</appwidget-provider>
Run Code Online (Sandbox Code Playgroud)

VoiceRIAWidget

public class VoiceRIAWidget extends AppWidgetProvider
{

    @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];

            CharSequence text = "Hello";

            RemoteViews views = new RemoteViews(context.getPackageName(),
                    R.layout.appwidget);

            views.setTextViewText(R.id.appwidget_text, text); …
Run Code Online (Sandbox Code Playgroud)

android android-appwidget

6
推荐指数
2
解决办法
4201
查看次数

GridView小部件中的重复项

更新:我打开了一个问题,如果您遇到同样的问题,请为其加注. http://code.google.com/p/android/issues/detail?id=28016

我有一个带有gridview的appwidget.

当我开始向我的小部件添加项目时,几乎总是我得到两次显示的第一个项目(而不是显示第一个项目和第二个项目).

如果我做一个小部件更新意图,那么问题是固定的,永远不会返回(假设我的gridview上已经有两个项目).

但总是在添加前两个项目时发生.

任何想法可能是什么?

更新:我刚刚注意到,当一个新项目添加到GridView时,它总会发生.如果我在不添加新项目的情况下刷新小部件,那么它可以正常工作.

我看到的另一件事是getViewAt方法总是为第一个项目(位置零)调用两次.也许它有关系?

我非常密切地关注这里的示例:http: //developer.android.com/resources/samples/WeatherListWidget/src/com/example/android/weatherlistwidget/WeatherWidgetService.html

这是我的RemoteViewsService,我认为这是相关的部分,但我不确定.还有什么可以影响它?

package com.manor.TestApp;

public class TestAppRemoteViewsService extends RemoteViewsService  {
@Override   
    public RemoteViewsFactory onGetViewFactory(Intent intent) {     
        return new TestAppViewsFactory(this.getApplicationContext(), intent);
    }
}

class TestAppViewsFactory implements RemoteViewsService.RemoteViewsFactory {

    private Context mContext;

    //private int mAppWidgetId;

    private TestDb mDb = null;

    private int mCount = 0;

    private String[] mData;

    public TestAppViewsFactory(Context context, Intent intent) {
        mContext = context;

        /*mAppWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);*/
    }

    @Override
    public void onCreate() {
        mDb …
Run Code Online (Sandbox Code Playgroud)

android android-gridview android-appwidget

6
推荐指数
1
解决办法
3951
查看次数

Android AppWidgetManager方法getAppWidgetIds返回空数组

我的应用程序在服务中更新,并首先执行此操作以获取小部件的ID:

AppWidgetManager widgetManager = AppWidgetManager.getInstance(this);
int[] widgetIds = widgetManager.getAppWidgetIds(new ComponentName(this, WidgetReceiver.class));
Run Code Online (Sandbox Code Playgroud)

有时,即使窗口小部件仍在主屏幕上,此方法也将返回一个空数组.我四处搜索,找不到任何相关信息.问题是它并不总是发生,只是有时候(尽管一旦看起来它在后续的更新尝试中不会成功的话就会发生).

有没有人碰到这个,更好的是找到了解决方案?非常感激.

android android-appwidget

6
推荐指数
0
解决办法
1517
查看次数

Android应用程序小部件listview onclick侦听器

我是android开发的新手。我正在尝试为我的应用程序制作一个小部件,其中将包含一个列表视图,每个列表视图除了标题和内容外还具有2个按钮。

我试图在按下该元素的按钮时(在主屏幕上)隐藏应用程序小部件中listitem的相应元素。

首先,我尝试检查按钮单击是否获得了任何响应,以及是否可以检测到是否可以找到项目的位置。所以我这样做:

listprovider.java(实现remoteviewfactory)

@Override
    public RemoteViews getViewAt(int position) {
        final RemoteViews remoteView = new RemoteViews(
                context.getPackageName(), R.layout.list_row);
        ListItem listItem = listItemList.get(position);
        remoteView.setTextViewText(R.id.heading, listItem.heading);
        remoteView.setTextViewText(R.id.content, listItem.content);

        Bundle extras = new Bundle();
        extras.putInt(WidgetProvider.EXTRA_ITEM, position);
        Intent fillInIntent = new Intent();
        fillInIntent.putExtras(extras);
        // Make it possible to distinguish the individual on-click
        // action of a given item
        remoteView.setOnClickFillInIntent(R.id.buttonwidget, fillInIntent);

        return remoteView;
    }
Run Code Online (Sandbox Code Playgroud)

然后在WidgetProvider.java中(扩展了AppWidgetProvider)

for (int i = 0; i < N; ++i) {
            RemoteViews remoteViews = updateWidgetListView(context,
                    appWidgetIds[i]);
            Intent clickIntent …
Run Code Online (Sandbox Code Playgroud)

android android-listview onclicklistener android-appwidget

6
推荐指数
1
解决办法
2191
查看次数