AIR Native Extentions for Android ( Java 部分 )

  AIR Native Extentions for Android ( Java 部分 )



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;
	}

}











  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ