Hello, I could solve my "no such class" error by changing com.redpanda.wolframAlpha to com.redpanda.wolframalpha. I don't know why app inventor did not accept my lowerCamelCase, it works for other extensions. Now I have the problem that
1. My app crashes, when it tries to execute blocks of my extension
2. It shows the error "Format specifier: d"
--------- beginning of crash 08-30 17:02:05.793 29751 29751 E AndroidRuntime: FATAL EXCEPTION: main 08-30 17:02:05.793 29751 29751 E AndroidRuntime: Process: com.thunkable.appinventor.aicompanion3, PID: 29751 08-30 17:02:05.793 29751 29751 E AndroidRuntime: java.util.MissingFormatArgumentException: Format specifier: d 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at java.util.Formatter.getArgument(Formatter.java:1111) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at java.util.Formatter.doFormat(Formatter.java:1076) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at java.util.Formatter.format(Formatter.java:1042) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at java.util.Formatter.format(Formatter.java:1011) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at java.lang.String.format(String.java:1554) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at java.lang.String.format(String.java:1528) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at com.google.appinventor.components.runtime.util.ErrorMessages.formatMessage(ErrorMessages.java:555) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at com.google.appinventor.components.runtime.Form$3.run(Form.java:856) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:746) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at android.os.Looper.loop(Looper.java:148) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5443) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 08-30 17:02:05.793 29751 29751 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 08-30 17:02:05.853 1804 3023 W ActivityManager: Force finishing activity com.thunkable.appinventor.aicompanion3/.Screen1
E/AndroidRuntime(23615): FATAL EXCEPTION: main
E/AndroidRuntime(23615): java.util.MissingFormatArgumentException: Format specifier: d
E/AndroidRuntime(23615): at java.util.Formatter.getArgument(Formatter.java:1131)
E/AndroidRuntime(23615): at java.util.Formatter.doFormat(Formatter.java:1096)
E/AndroidRuntime(23615): at java.util.Formatter.format(Formatter.java:1062)
E/AndroidRuntime(23615): at java.util.Formatter.format(Formatter.java:1031)
E/AndroidRuntime(23615): at java.lang.String.format(String.java:2177)
E/AndroidRuntime(23615): at java.lang.String.format(String.java:2151)
E/AndroidRuntime(23615): at com.google.appinventor.components.runtime.util.ErrorMessages.formatMessage(ErrorMessages.java:526)
E/AndroidRuntime(23615): at com.google.appinventor.components.runtime.Form$3.run(Form.java:808)
E/AndroidRuntime(23615): at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(23615): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(23615): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(23615): at android.app.ActivityThread.main(ActivityThread.java:3687)
E/AndroidRuntime(23615): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(23615): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(23615): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
E/AndroidRuntime(23615): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
E/AndroidRuntime(23615): at dalvik.system.NativeStart.main(Native Method)
if (appID.equals("")){
form.dispatchErrorOccurredEvent(WolframAlpha.this, "RequestSpoken",
3300); //No API Key
return;
}
AsynchUtil.runAsynchronously(new Runnable() {
@Override
public void run() {
try {
performRequest("v1/spoken", "", "", "", "", "", requestText);
currentAPI = "spoken";
} catch (IOException e) {
form.dispatchErrorOccurredEvent(WolframAlpha.this, "RequestSpoken",
3300); //No connection
} catch (JSONException je) {
form.dispatchErrorOccurredEvent(WolframAlpha.this, "RequestSpoken",
3300); //Could not parse JSON
}
}
});