什么是二元'在chrome.wallpaper API中?

时间:2017-04-12 21:15:29

标签: javascript google-chrome google-chrome-app

我想使用chrome.wallpaper api将用户上传的图片设置为壁纸。

我设法使用JavaScript将上传的文件转换为ArrayBuffer,但在'数据中使用了该文件。 key导致类似于此的错误消息:

"Invalid value for argument 1. Property 'data': Expected 'binary' but got 'object'."

我使用新的Blob()将ArrayBuffer转换为blob,但是我得到了同样的错误。将其转换为字符串会导致相同的错误,但使用' object'替换为' string'。

到目前为止,在Google上搜索没有任何结果。在这种情况下,二进制格式是什么,我将如何发送它?

清单肯定有壁纸属性,我也可以通过URL设置壁纸。二元是我面临的唯一问题。

以下是我目前的代码:

app.js:

reader.addEventListener('load', function() {
  chrome.runtime.sendMessage({
    'action': 'new_wallpaper',
    'wallpaper_data': reader.result // I've also tried new Blob([reader.result])
  }, function(response) {
    console.log(response);
  });
}, false);
reader.readAsArrayBuffer(file);

background.js:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  if(request.action == 'new_wallpaper') {
    chrome.wallpaper.setWallpaper({
      'data': request.wallpaper_data,
      'layout': 'CENTER_CROPPED',
      'filename': 'Wallpaper Manager',
      'thumbnail': true
    }, function(thumbnail) {
       sendResponse(thumbnail);
    });
  }
  return true;
});

0 个答案:

没有答案