I have a problem with a function (setLayerType(LAYER_TYPE_NONE, null)
) available in api >=11, and my code should run on android 1.6 (API level 4) too.
I have tried to use reflection like this:
try {
Method method = View.class.getMethod("setLayerType", Integer.TYPE, null);
method.invoke(LAYER_TYPE_NONE, null);
view.setLayerType(LAYER_TYPE_NONE, null);
} catch (Throwable e) {
Log.e("_________________test", "Function not found");
}
but my app crash at view.setLayerType with java.lang.VerifyError....
Does anybody have any idea how can I workaround this crash and get a backward compatibility with this function in lower level api?
Thanks, Arkde
Just remove
view.setLayerType(LAYER_TYPE_NONE, null);
and you should be fine, for security reasons, Java/Android would first verify that it has at least a shot of running a given class before proceeding, and on older Android OS it doesn't know how to execute "view.setLayerType(LAYER_TYPE_NONE, null);", it would throw a hard Error before any code from that class could be run.
Since you've run the code using reflection, you shouldn't need that line of code anyway.
This should be useful: http://android-developers.blogspot.com/2009/04/backward-compatibility-for-android.html
If it really has something to do with hardware acceleration, you could add following to your manifest:
<application android:hardwareAccelerated="true">
<activity ... />
<activity android:hardwareAccelerated="false" />
</application>
src: http://developer.android.com/guide/topics/graphics/hardware-accel.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With