2012-04-05 3 views

Antwort

3

Sie können Phonegap Plugin erstellen Paket com.android.test;

import java.io.IOException; 

import org.apache.cordova.api.Plugin; 
import org.apache.cordova.api.PluginResult; 
import org.apache.cordova.api.PluginResult.Status; 
import org.json.JSONArray; 

import android.app.WallpaperManager; 
import android.content.Context; 

public class testPlugin extends Plugin { 
    public final String ACTION_SET_WALLPAPER = "setWallPaper"; 
    @Override 
    public PluginResult execute(String action, JSONArray arg1, String callbackId) { 
     PluginResult result = new PluginResult(Status.INVALID_ACTION); 
     if (action.equals(ACTION_SET_WALLPAPER)) { 
      WallpaperManager wallpaperManager = WallpaperManager.getInstance((Context) this.ctx); 
      try { 
       wallpaperManager.setResource(R.drawable.ic_launcher); 
       result = new PluginResult(Status.OK); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       result = new PluginResult(Status.ERROR, e.getMessage()); 
      } 
     } 
     return result; 
    } 
} 

dies ist Javascript-Datei test.js

var TestPlugin = function() {}; 

TestPlugin.prototype.set = function (ms, successCallback, failureCallback) { 
// navigator.notification.alert("OMG"); 
    return cordova.exec(successCallback, failureCallback, 'testPlugin', "setWallPaper", [ms]); 
}; 

PhoneGap.addConstructor(function() { 
    PhoneGap.addPlugin("test", new TestPlugin()); 
}) 

und Haupt Plugin-Datei Aufruf

window.plugins.test.set("kaka", 
     function() { 
      navigator.notification.alert("Set Success");  
     }, 
     function (e) { 
      navigator.notification.alert("Set Fail: " + e); 
     } 
    ); 

; 

mit Android-Gerät Erlaubnis

<uses-permission android:name="android.permission.SET_WALLPAPER" /> 

und plugin.xml

<plugin name="testPlugin" value="com.android.test.testPlugin"/> 

während Sie Bild mit Downloader-Plugin herunterladen und mit Bitmap speichern. Sie rufen einfach

wallpaperManager.setBitmap(bitmap) 
+0

Ehrfürchtig Dank:

package com.wizeideas.ImageEvolverApp; import java.io.IOException; import java.io.InputStream; import java.util.logging.Logger; import org.apache.cordova.api.CallbackContext; import org.apache.cordova.api.CordovaPlugin; import org.apache.cordova.api.PluginResult; import org.apache.cordova.api.PluginResult.Status; import org.json.JSONArray; import org.json.JSONException; import android.app.WallpaperManager; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.util.Log; public class testPlugin extends CordovaPlugin { public final String ACTION_SET_WALLPAPER = "setWallPaper"; @Override public boolean execute(String action, JSONArray arg1, CallbackContext callbackContext) { PluginResult result = new PluginResult(Status.INVALID_ACTION); if (action.equals(ACTION_SET_WALLPAPER)) { Context ctx = this.cordova.getActivity().getApplicationContext(); WallpaperManager wallpaperManager = WallpaperManager.getInstance(ctx); try { InputStream bitmap=null; try { bitmap=this.cordova.getActivity().getAssets().open("www/img/" + arg1.getString(0)); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } //reference to image folder Bitmap bit=BitmapFactory.decodeStream(bitmap); wallpaperManager.setBitmap(bit); result = new PluginResult(Status.OK); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); result = new PluginResult(Status.ERROR, e.getMessage()); } } callbackContext.sendPluginResult(result); return true; } } 

Sie müssen auch enthalten config.xml-Datei unter res/xml ändern! – MichaelS

+1

Dies funktioniert nicht mehr mit phonegap 2.0, da this.ctx LegacyContext anstelle von Context zurückgibt. Weiß jemand wie es jetzt sein soll? Ich habe noch keine richtige Dokumentation gefunden. – Towa

0

Hier ist, wie ich testPlugin.java behoben. Änderungen sind unten fett gedruckt.

<feature name="testPlugin"> 
    <param name="android-package" value="com.companyname.yourappname.testPlugin"/> 
</feature>