小编use*_*313的帖子

AppWidgetManager.ACTION_APPWIDGET_BIND始终返回Activity.RESULT_CANCELED

我正在构建一个自定义启动器。我已经按照Android文档中提到的步骤来托管应用小部件以及浏览默认的Launcher源代码。但是,当我使用意图动作作为AppWidgetManager.ACTION_APPWIDGET_BIND调用startActivityForResult时,即使用户正在接受UI上显示的对话框提示,它也始终返回Activity.RESULT_CANCELED。

这是代码片段

    appWidgetManager = AppWidgetManager.getInstance(this);
    appWidgetHost = new AppWidgetHost(this, 7772);
    int appWidgetId = appWidgetHost.allocateAppWidgetId();
    Intent pickIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK);
    pickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
    startActivityForResult(pickIntent, REQUEST_PICK);

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.d(TAG, " onActivityResult " + requestCode + " res " + resultCode);
        if (requestCode == REQUEST_PICK && resultCode == Activity.RESULT_OK)
        {
            int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
            AppWidgetProviderInfo info = appWidgetManager.getAppWidgetInfo(appWidgetId);

            boolean hasPermission = appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId, info.provider);
            if (!hasPermission)
            {
                Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_BIND);
                intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, …
Run Code Online (Sandbox Code Playgroud)

android android-widget android-launcher

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

标签 统计

android ×1

android-launcher ×1

android-widget ×1