无法将我的Android Studio应用程序与Dropbox连接,但是代码在Eclipse中执行

问题描述 投票:0回答:1

我目前无法通过android studio访问我的保管箱帐户。我打算使用保管箱来存储用户上传到我的应用程序中的照片,然后将保管箱文件名存储在数据库中。我已经在Eclipse上测试了此代码,它的工作原理很吸引人。但我根本无法使其在android studio中正常工作。我以为我在android studio中某处缺少步骤...但是我找不到那一步可能是什么。我将不胜感激。

我已将以下内容添加到我的build.gradle中

implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.dropbox.core:dropbox-core-sdk:3.1.1'

我也将此添加到了该软件包下的android清单中。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

这是我尝试执行的简单代码。请注意,我的ACCESS_TOKEN已存储为最终字符串,并且确实包含正确的访问令牌(如前所述,我可以在eclipse中完美运行此代码(及更多代码))。

public void dropbox(){

        DbxRequestConfig config = DbxRequestConfig.newBuilder("myapp").build();
        DbxClientV2 client = new DbxClientV2(config, ACCESS_TOKEN);  
        FullAccount account = null;
        try {
            account = client.users().getCurrentAccount(); //This is where my error occurs
        } catch (DbxException e) {
            e.printStackTrace();
        }
        Log.d("test",account.getName().getDisplayName());



    }

这是我收到的完整错误消息。

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.sigm.fetchyourpet, PID: 8294
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402)
        at android.view.View.performClick(View.java:6597)
        at android.view.View.performClickInternal(View.java:6574)
        at android.view.View.access$3100(View.java:778)
        at android.view.View$PerformClick.run(View.java:25885)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
        at android.view.View.performClick(View.java:6597) 
        at android.view.View.performClickInternal(View.java:6574) 
        at android.view.View.access$3100(View.java:778) 
        at android.view.View$PerformClick.run(View.java:25885) 
        at android.os.Handler.handleCallback(Handler.java:873) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
     Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1513)
        at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:117)
        at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:105)
        at java.net.InetAddress.getAllByName(InetAddress.java:1154)
        at com.android.okhttp.Dns$1.lookup(Dns.java:39)
        at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:175)
        at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:141)
        at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:83)
        at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:174)
        at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
        at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:258)
        at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218)
        at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:26)
        at com.dropbox.core.http.StandardHttpRequestor.getOutputStream(StandardHttpRequestor.java:132)
        at com.dropbox.core.http.StandardHttpRequestor.access$000(StandardHttpRequestor.java:29)
        at com.dropbox.core.http.StandardHttpRequestor$Uploader.<init>(StandardHttpRequestor.java:141)
        at com.dropbox.core.http.StandardHttpRequestor.startPost(StandardHttpRequestor.java:73)
        at com.dropbox.core.http.StandardHttpRequestor.startPost(StandardHttpRequestor.java:29)
        at com.dropbox.core.DbxRequestUtil.startPostRaw(DbxRequestUtil.java:275)
        at com.dropbox.core.v2.DbxRawClientV2$1.execute(DbxRawClientV2.java:146)
        at com.dropbox.core.v2.DbxRawClientV2.executeRetriable(DbxRawClientV2.java:330)
        at com.dropbox.core.v2.DbxRawClientV2.executeRetriableWithRefresh(DbxRawClientV2.java:351)
        at com.dropbox.core.v2.DbxRawClientV2.rpcStyle(DbxRawClientV2.java:137)
        at com.dropbox.core.v2.users.DbxUserUsersRequests.getCurrentAccount(DbxUserUsersRequests.java:120)
        at com.sigm.fetchyourpet.MainActivity.dropbox(MainActivity.java:63)
        at com.sigm.fetchyourpet.MainActivity.signUp(MainActivity.java:174)
        at java.lang.reflect.Method.invoke(Native Method) 
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) 
        at android.view.View.performClick(View.java:6597) 
        at android.view.View.performClickInternal(View.java:6574) 
        at android.view.View.access$3100(View.java:778) 
        at android.view.View$PerformClick.run(View.java:25885) 
        at android.os.Handler.handleCallback(Handler.java:873) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
android android-studio dropbox
1个回答
0
投票

这是因为您正在主线程上运行HTTP请求,这是简单的解决方法:

Thread thread = new Thread() {
    @Override
    public void run() {
        try {
            FullAccount account = client.users().getCurrentAccount(); 
            Log.d("test",account.getName().getDisplayName());
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
};

thread.start();
© www.soinside.com 2019 - 2024. All rights reserved.