我尝试了Android Studio中的Cloudboost Java Sdk并遇到了希望有人可以帮助我的障碍。我认为我已经正确设置了该项目,但Logcat告诉我其他方面。我已经包含了所有相关文件的摘录供您查看。感谢Cloudboost Java Android Studio项目设置
首先,这里是logcat的错误:
致命异常:主要过程:main.dozer74.cloudboosttest,PID:18357 java.lang.IllegalStateException:在机器人的onClick :的Android无法执行方法。 (android.view.java:5198) at android.view.View $ PerformClick.run(View.java: 21147) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java .lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit。 java:616) 引发:java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java: 288) at android.view.View.performClick(View.java:5198) at android.view.View $ PerformClick.run(View.java:21147) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit .ja VA:616) 产生的原因:android.os.NetworkOnMainThreadException 在android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273) 在java.net.InetAddress.lookupHostByName(InetAddress.java:431) 是java .net.InetAddress.getAllByNameImpl(InetAddress.java:252) at java.net.InetAddress.getAllByName(InetAddress.java:215) at com.android.okhttp.internal.Network $ 1.resolveInetAddresses(Network.java:29)在com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188) (在com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelec tor.java:157) 在com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100) 在com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357) at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330) at com.android。okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433) at com.android.okhttp.internal.huc。 HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114) 在com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:245) 在com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection。的java:218) 在com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java) 在io.cloudboost.util.CBParser.callJson(CBParser.java:69) 在io.cloudboost.CloudQuery.find(CloudQuery.java:1408) 在main.dozer74.cloudboosttest.MainActivity.getTroopsFromDatabase(MainActivity.java:27) 在java.lang.reflect.Method.invoke(本机方法) 在android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 在android.view.View.performClick(View.java:5198) 在android.view.View $ PerformClick.run(查看。的java:21147) 在android.os.Handler.handleCallback(Handler.java:739) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(噜per.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller .RUN(ZygoteInit.java:726) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
应用程序是非常简单;只是执行查询按钮
按钮的XML代码
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Get Troops From Database"
android:id="@+id/button"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:onClick="getTroopsFromDatabase"/>
的按钮
Java代码:
public void getTroopsFromDatabase(View view) {
//Log.d("dozer74", "Get troops from database");
CloudQuery query = new CloudQuery("Messages");
try {
query.find(new CloudObjectArrayCallback(){
@Override
public void done(CloudObject[] x, CloudException t) {
if(x != null){
Log.d("dozer74", "====>>>> x is not equal to null");
} else {
Log.d("dozer74", "====>>>> x is equal to null");
}
if(t != null){
Log.d("dozer74", "====>>>> t is not equal to null");
} else {
Log.d("dozer74", "====>>>> t is equal to null");
}
}
});
} catch (CloudException e) {
e.printStackTrace();
}
}
这里是我的清单与引用一个叫做应用程序类在我的Cloudboost初始化发生
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="main.dozer74.cloudboosttest">
<application
android:name=".Application"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
最后,这里是来自Application.class的代码,应用程序ID和主键“X”编出来的,除了代码显而易见的原因加入到我的build.gradle在那里我得到了SDK到项目中。
Application.class
public class Application extends android.app.Application {
@Override
public void onCreate() {
super.onCreate();
//Init your Application
CloudApp.init("xxxxxxxxxxxx", "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
}
}
的build.gradle片断
repositories {
maven {
url 'https://docs.cloudboost.io/java.html'
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'io.cloudboost:JavaSDK:1.0.3'
}