- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想从我的应用程序小部件启动不同的应用程序。这个小部件是一个项目列表,点击一个项目应该会打开一个应用程序,比如 Google Plus。按下列表中的项目时没有任何反应。当我删除 setData 和 setComponentName 时,它会弹出一个对话框,询问要使用哪个应用程序。无法将数据和组件名称与 appWidget 集合上的 PendingIntent 合并吗?
我的 AppWidgetProvider 看起来像这样:
public class StreamsWidgetProvider 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];
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
...
//set service for list view
Intent listIntent = new Intent(context, StreamsWidgetService.class);
listIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
listIntent.setData(Uri.parse(listIntent.toUri(Intent.URI_INTENT_SCHEME)));
views.setRemoteAdapter(R.id.streamItemsList, listIntent);
...
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
views.setPendingIntentTemplate(R.id.streamItemsList, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}
StreamsWidgetService 看起来像这样:
public class StreamsWidgetService extends RemoteViewsService {
private static final String TAG = "StreamsWidgetService";
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
return new StreamItemWidgetFactory(intent);
}
private class StreamItemWidgetFactory implements RemoteViewsService.RemoteViewsFactory {
@Override
public RemoteViews getViewAt(int position) {
StreamItem item = mItems.get(position);
RemoteViews rv = new RemoteViews(getPackageName(), R.layout.widget_item);
...
Intent intent = new Intent();
intent.setData(ContentUris.withAppendedId(StreamItems.CONTENT_URI, item.getId()));
AccountType at = item.getAccountType();
intent.setComponent(new ComponentName(at.getPackageName(), at.getViewStreamItemActivity()));
rv.setOnClickFillInIntent(R.id.streamItemRowId, intent);
Log.d(TAG, "FillIntent set for " + item.getId() + " at position " + position + " with data " + intent.getDataString() + " and component " + intent.getComponent().toString());
return rv;
}
...
}
}
当使用没有 fillIntent 的正常 Activity 时,这有效:
final AccountType at = item.getAccountType();
final Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(ContentUris.withAppendedId(StreamItems.CONTENT_URI, item.getId()));
intent.setClassName(at.getPackageName(), at.getViewStreamItemActivity());
startActivity(intent);
我该如何解决这个问题?我做错了什么?
最佳答案
除非您特别要求,否则 PendingIntent
不允许填写组件。
PendingIntent pendingIntent = PendingIntent.getActivity(context,
0, intent, Intent.FILL_IN_COMPONENT);
请注意,这与其他 FILL_IN_*
标志的工作方式不同。
关于android - AppWidget setFillInIntent 无法处理 setData 或 componentName 中的数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12718731/
我正在为这个问题挠头,不知道该怎么做。在我开始 Activity 后,我收到了 NullPointerException 的报告,但并非一直如此。知道会发生什么吗? 这是 Google 报告的堆栈跟踪
当您创建空的Svelte组件(例如ComponentName.svelte)时,如下所示: export let segment; Lorem ipsum lorem ip
来自 Pro Android 2 书籍:“ComponentName 将 package 名称和 class 名称包装在一起。例如...” Intent intent = new Intent();
我正在像这样从服务更新小部件(服务和小部件类在两个不同的包中) AppWidgetManager widgetManager = AppWidgetManager.getInstance(this);
我如何在助手内部调用与 Handlebars 助手 {{component 'componentName' model=model}} 等效的助手,以根据以编程方式更改的 componentName
我有一个调用另一个应用程序的小部件,这是代码中最重要的部分: final Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.ad
我有这行代码,我在这里得到一个 NullPointerException 第219行Search.java Intent intent = new Intent((Context) actionBar
我有一个前台屏幕 Activity 的 ComponentName。我能够从中获取上下文对象。但我需要 Activity 实例。如何从 ComponentName 获取 Activity 引用。所有这
我对 Android 中的 ComponentName 类有点困惑。 获取组件名称对象的方法有很多种,但我不知道何时使用哪个...以及为什么! 例子: 应用包为de.zordid.sampleapp
正如标题所示,我收到错误 - vue.js:634 [Vue warn]: Unknown custom element: - 你是否正确注册了组件? 我猜这是一个愚蠢的错字,我查了一下,但找不到它。
我有一个功能,我只想在满足某些条件时才可用,因此我有此 Activity 别名:
我需要 Android.Content.ComponentName 的构造函数中的 Java 类名称,因为 Xamarin 没有像它那样采用 typeof(ClrType) 的重载构造函数对于其他一些
不知道为什么会报错 compiler.js:2175 Uncaught Error: Can't resolve all parameters for ClauseListComponent: ([o
我想用我的应用禁用我的相机 我发现有一个函数 setCameraDisabled (ComponentName admin, boolean disabled); 但是我不知道怎么用 什么是“Comp
我想从我的应用程序小部件启动不同的应用程序。这个小部件是一个项目列表,点击一个项目应该会打开一个应用程序,比如 Google Plus。按下列表中的项目时没有任何反应。当我删除 setData 和 s
我正在与用户一起处理一个项目。现在我正在使用 UserProfile 这是我收到的错误。 React has detected a change in the order of Hooks calle
我正在与用户一起处理一个项目。现在我正在使用 UserProfile 这是我收到的错误。 React has detected a change in the order of Hooks calle
在 Android Q / Android 10使用 USES_POLICY_DISABLE_KEYGUARD_FEATURES的keyguard_features导致安全异常。 devicePoli
我有几个用 VueJS 编写的项目。我希望能够使用 CMD/CTRL + 左键单击该元素,从 HTML 模板元素导航到它的 component.vue 文件。 我的观察是,当项目变大时,到组件的导航停
我是一名优秀的程序员,十分优秀!