实例如下:
private Context mOtherAppsContext=null;
private static final String MCUBE_PACKAGE="com.mcube.acc";
private static final String MCUBE_CLASS="com.mcube.acc.SensorControl";
private Class mcubeClass=null;
private Integer initCheck;
try
{
mOtherAppsContext = createPackageContext(MCUBE_PACKAGE,Context.CONTEXT_IGNORE_SECURITY|CONTEXT_INCLUDE_CODE);
mcubeClass = mOtherAppsContext.getClassLoader().loadClass(MCUBE_CLASS);
final Object myInstance = mcubeClass.newInstance();
final Method getProduct = mcubeClass.getMethod("getProduct",(Class[]) null);
final Method initJNI = mcubeClass.getMethod("init_jni",(Class[]) null);
initCheck=(Integer) initJNI.invoke(myInstance);
if(initCheck != null && initCheck.intValue()== 0)
{
product = (Integer)getProduct.invoke(myInstance);
if(product != null)
{
Log.i(TAG,"get product id check result=" + product.intValue());
if (product.intValue() != 0 )
{
//if(mGsensorCali != null)
root.removePreference(mGsensorCali);
Log.i(TAG,"Not mCube product");
}
else
{
Log.i(TAG,"mCube product Detected");
}
}
}
else
{
//if(mGsensorCali != null)
root.removePreference(mGsensorCali);
Log.i(TAG,"product check fail");
}
}
catch (NameNotFoundException e)
{
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
catch (InstantiationException e)
{
e.printStackTrace();
}
catch (IllegalAccessException e)
{
e.printStackTrace();
}
catch (NoSuchMethodException e)
{
e.printStackTrace();
}
catch (InvocationTargetException e)
{
e.printStackTrace();
}