|
AndroidExtensions.java
package lightbox;
import java.util.HashMap;
import java.util.Map;
import android.util.Log;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREExtension;
import com.adobe.fre.FREFunction;
import lightbox.ToastFunction;
import lightbox.OpenURLFunction;
import lightbox.GetVersionFunction;
/**
* <p>
* This class defines a simple AIR Native Extension exposing a set of simple
* and useful Android native facilities:
*
* <li>sharing</li>
* <li>SMS sending</li>
* <li>Toast messages</li>
* </p>
*
* @author mr_archano (twitter: @mr_archano)
*
*/
public class AndroidExtensions implements FREExtension {
public static final String TAG = "AndroidExtensions";
@Override
public FREContext createContext(String arg0) {
return new AndroidExtensionsContext();
}
@Override
public void initialize() {
Log.d(TAG, "Extension initialized.");
}
@Override
public void dispose() {
Log.d(TAG, "Extension disposed.");
}
/**
*
* The <code>FREContext</code> for this AIR Native Extension.
*
*/
protected class AndroidExtensionsContext extends FREContext {
public static final String TAG = AndroidExtensions.TAG;
@Override
public void dispose() {
Log.d(TAG,"Context disposed.");
}
@Override
public Map<String, FREFunction> getFunctions() {
Map<String, FREFunction> functions = new HashMap<String, FREFunction>();
functions.put("toast", new ToastFunction());
functions.put("openURL", new OpenURLFunction());
functions.put("getVersion", new GetVersionFunction());
return functions;
}
}
}
ToastFunction.java
package lightbox;
import android.util.Log;
import android.widget.Toast;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;
import lightbox.AndroidExtensions;
/**
* <p>
* This function exposes the Android toast facility. In order to use this function
* you have to provide:
*
* <li> the text for the toast</li>
* <li> the duration type for the toast (long or short)</li>
* </p>
*
* @author mr_archano (twitter: @mr_archano)
*
*/
public class ToastFunction implements FREFunction {
@Override
public FREObject call(FREContext context, FREObject[] args) {
if(args == null || args.length < 1) {
Log.e(AndroidExtensions.TAG, "Invalid arguments number for ToastFunction! (requested: text, optional: duration type)");
return null;
}
try{
String text = args[0].getAsString();
int toastType = Toast.LENGTH_SHORT;
if(args.length == 2 && args[1].getAsBool())
toastType = Toast.LENGTH_LONG;
Toast.makeText(context.getActivity(), text, toastType).show();
}
catch(Exception e) {
Log.e(AndroidExtensions.TAG, "Error: "+e.getMessage(), e);
}
return null;
}
}
OpenURLFunction.java
package lightbox;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;
import lightbox.AndroidExtensions;
public class OpenURLFunction implements FREFunction {
@Override
public FREObject call(FREContext context, FREObject[] args) {
try{
String text = args[0].getAsString();
context.getActivity().startActivity( new Intent(Intent.ACTION_VIEW,Uri.parse(text)) );
}
catch(Exception e) {
Log.e(AndroidExtensions.TAG, "Error: "+e.getMessage(), e);
}
return null;
}
}
GetVersionFunction.java
package lightbox;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.os.Build.VERSION;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;
import lightbox.AndroidExtensions;
public class GetVersionFunction implements FREFunction {
@Override
public FREObject call(FREContext context, FREObject[] args) {
try{
return FREObject.newObject(VERSION.RELEASE);
}
catch(Exception e) {
Log.e(AndroidExtensions.TAG, "Error: "+e.getMessage(), e);
}
return null;
}
}
|