使用Mozactivity Firefox OS将前置图像用作壁纸

时间:2014-09-08 14:31:29

标签: javascript jquery firefox-os

我想从网上获取图片并将其设置为Firefox OS设备上的壁纸。

到目前为止,我已尝试过两种方法,

$(document).on( 'click', '#share-image', function() {
  walp = new Image()
  walp.onload = function () {
  var walCanvas = document.createElement('canvas');
  walCanvas.width = walp.width;
  walCanvas.height = walp.height;
  var walCtx = walCanvas.getContext('2d');
  walCtx.drawImage(walp,0,0);
  walCanvas.toBlob( function (walBlob) {
    var Activitiy = new MozActivity({
      name: 'share',
      data: {
        type: 'image/*',
        number: 1,
        blobs: [walBlob]
      }
    });
  });


};
walp.src = image; //image is the link  to jpeg.
});

这一个......

var shareImage = document.querySelector("#share-image"),
imgToShare = document.querySelector('#prependedImage');
alert(imgToShare);
if (shareImage && imgToShare) {
  shareImage.onclick = function () {
     if(imgToShare.naturalWidth > 0) {
      // Create dummy canvas
      var blobCanvas = document.createElement("canvas");
      blobCanvas.width = imgToShare.width;
      blobCanvas.height = imgToShare.height;
      // Get context and draw image
      var blobCanvasContext = blobCanvas.getContext("2d");
      blobCanvasContext.drawImage(imgToShare, 0, 0);
      // Export to blob and share through a Web Activitiy
      blobCanvas.toBlob(function (blob) {
        new MozActivity({
          name: "share",
          data: {
            type: "image/*",
            number: 1,
            blobs: [blob]
          }
        });
      });
    }
    else {
      alert("Image failed to load, can't be shared");
    }
  };
}

两者都适用于本地保存的图像,但不适用于从远程位置获取的图像。

我也尝试过以下方法。

  var pre = '<img width="100%" data-l10n-id="prependedImage" id="prependedImage" src="'+image+'" />';
          $('#image1').prepend(pre);

$('#prependedImage').attr('src',image);

两者都有效,但除非它是本地保存的图像,否则它们都不会显示壁纸菜单。 我是javascript的新手,并希望得到一个解释代码示例有什么问题的答案。 感谢。

1 个答案:

答案 0 :(得分:1)

你可以试试像:

    var xhr = new XMLHttpRequest({
        mozSystem: true
    });
    xhr.open("GET", "http://25.media.tumblr.com/4751d1eccf9311ee0e05bdff819a7248/tumblr_n2yxzxzxr81rsg8blo1_250.png", true);
    xhr.responseType = "blob";
    xhr.onload = function () {
        //sample activity
        var activity = new MozActivity({
        name: "share",
        data: {
            type: "image/*",
            number:1,
            blobs: [this.response],
            filenames:["wallpapertest.png"]
        },
        });
    };
    xhr.onerror = function () {
        alert("Error with System XHR");
    };
    xhr.send();

您还需要将应用程序设置为特权,并在清单中添加systemxhr权限:

  "permissions": {  
    "systemXHR": {} 
  },
  "type": "privileged"