使用多个活动的Dropbox Sync API

埃米尔区

我想使用一个活动来验证当前使用的保管箱帐户:

因此,第一个活动将初始化dbxAccount对象。然后,该实例将传递给第二个“活动”,“应该”使用该活动上载数据。

每次使用dbxFileSystem时,应用程序都会崩溃,并显示以下错误磁盘I / O错误

        public class Upload extends Activity {
    private static final String appKey = "xxx";
    private static final String appSecret = "yyy";

    private static final int REQUEST_LINK_TO_DBX = 0;
    DbxFileSystem dbxFs;
    DbxFile imageLocationDbxF;
    DbxPath protocollFile;
    private DbxAccountManager mDbxAcctMgr;
    String dataPath;
    Button retry;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upload);
        mDbxAcctMgr = DbxAccountManager.getInstance(getApplicationContext(),
                appKey, appSecret);
        onClickLinkToDropbox();

        Button getBack = (Button) findViewById(R.id.backId);
        retry = (Button) findViewById(R.id.retry);
        retry.setVisibility(View.INVISIBLE);
        getBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DbxAccount chosenAccount=mDbxAcctMgr.getLinkedAccount();

//-----> here the dbxAccount Object is delivered <------

                MovementDetection.mAccount=chosenAccount;
                Intent sendAccount = new Intent(getApplicationContext(), ManueActivity.class);
                startActivity(sendAccount);
            }
        });
        retry.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                onClickLinkToDropbox();
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (mDbxAcctMgr.hasLinkedAccount()) {
            // showLinkedView();
            try {
                dbxFs = DbxFileSystem
                        .forAccount(mDbxAcctMgr.getLinkedAccount());
                Log.i(TAG, "Account linked!!!");

                // -> check if the folder exists!
            } catch (Unauthorized e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else {
            retry.setVisibility(View.VISIBLE);
        }
    }

    private void onClickLinkToDropbox() {
        mDbxAcctMgr.startLink((Activity) this, REQUEST_LINK_TO_DBX);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_LINK_TO_DBX) {
            if (resultCode == Activity.RESULT_OK) {
                Log.i("", "Linked---!!");

            } else {
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

上载或创建图像/文件/文件夹...的调用方法在此Activity中有效。但是此活动仅用于验证当前使用的保管箱帐户。

现在,第二个活动具有一个已初始化的dbxAccount对象。它被描述为静态变量(--->参见此注释<---)然后通过Intent调用第二个Activity

public class MovementDetection extends Activity implements
    CvCameraViewListener2 {


private CameraView mOpenCvCameraView;
public static DbxAccount mAccount;
public DbxFileSystem dbxFs;
DbxFile imageLocationDbxF;
private DbxPath DestinationFolder;
private static final int REQUEST_LINK_TO_DBX = 0;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // do some stuff here
    Log.i(TAG, "the linked account is: "+mAccount.getAccountInfo());
    // Log cat shows normal contents of this Object as it should

}

@Override
public void onResume() {
    super.onResume();
    if (mAccount.isLinked()) {
        // showLinkedView();
        try {
            dbxFs = DbxFileSystem
                    .forAccount(mAccount);
            Log.i(TAG, "Account linked!!!");    

        } catch (Unauthorized e) {

            e.printStackTrace();
        }
    }else{
        Log.i(TAG, "no linkedAccount found");
    }
    OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this,
            mLoaderCallback);
}

@Override
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
    // does some stuff here....

    DbxFile testFile= dbxFs.create(new DbxPath("hello.txt"));
    //here the program stops!

    return inputFrame.rgba();
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_LINK_TO_DBX) {
        if (resultCode == Activity.RESULT_OK) {
            Log.i("", "Linked---!!");

        } else {
        }
    } else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

这是我的manifest.xml

> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.opencv.Pulsdetection"
android:targetSdkVersion="18"
android:versionCode="21"
android:versionName="2.1" >

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

<application
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
    <activity
        android:name="org.opencv.MotionControl.Main"
        android:configChanges="keyboardHidden|orientation"
        android:label="@string/app_name"
        android:screenOrientation="landscape" >
    </activity>
    <activity
        android:name="org.opencv.MotionControl.ManueActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="org.opencv.MotionControl.CameraChose"
        android:label="@string/title_activity_camera_chose" >
    </activity>
    <activity
        android:name="org.opencv.Camera.CameraChose"
        android:label="@string/title_activity_camera_chose" >
    </activity>
    <activity
        android:name="org.opencv.Camera.ShowAndUpload"
        android:label="@string/title_activity_show_and_upload" >
    </activity>
    <activity android:name="com.dropbox.sync.android.DbxAuthActivity" />
    <activity
        android:name="com.dropbox.client2.android.AuthActivity"
        android:launchMode="singleTask" >
        <intent-filter>
            <data android:scheme="xxxx" />

            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    <service
        android:name="com.dropbox.sync.android.DbxSyncService"
        android:enabled="true"
        android:exported="false"
        android:label="Dropbox Sync"/>
    <activity
        android:name="org.dropbox.connect.ConnectToDropbox"
        android:label="@string/title_activity_connect_to_dropbox" >
    </activity>
    <activity
        android:name="org.FileSystems.LookUpPath"
        android:label="@string/title_activity_look_up_path" >
    </activity>
    <activity
        android:name="org.dropbox.connect.ShowAndUploadImages"
        android:label="@string/title_activity_show_and_upload_images" >
    </activity>
    <activity
        android:name="org.dropbox.connect.Upload"
        android:label="@string/title_activity_upload" >
    </activity>
    <activity
        android:name="org.dropbox.connect.AccountManager"
        android:label="@string/title_activity_account_manager" >
    </activity>
    <activity
        android:name="org.opencv.MotionControl.MovementDetection"
        android:configChanges="keyboardHidden|orientation"
        android:label="@string/title_activity_open_viedo"
        android:screenOrientation="landscape" >
    </activity>


</application>

<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:resizeable="true"
    android:smallScreens="true" />

<uses-sdk android:minSdkVersion="8" />

<uses-permission android:name="android.permission.CAMERA" />

<uses-feature
    android:name="android.hardware.camera"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.autofocus"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.front"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.front.autofocus"
    android:required="false" />

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

由于这是我在这里的第一个问题,对不起格式,我也不知道如何发布错误代码。

我期待获得答案谢谢!

赛里森

不要在Activity上设置静态变量

// do not do this!
MovementDetection.mAccount=chosenAccount;

用户链接到帐户后,它将在应用程序的生命周期内保持链接状态(直到卸载或显式取消链接)。

当您希望在其他活动中访问Dropbox时(链接之后-可能是一次性设置或类似设置的一部分)

    DbxAccountManager mDbxAcctMgr = DbxAccountManager.getInstance(
            getApplicationContext(), DROPBOX_APPKEY,
            DROPBOX_SECRETKEY);
    try {
        if (mDbxAcctMgr.hasLinkedAccount()
                && mDbxAcctMgr.getLinkedAccount().isLinked()) {
            dbxFs = DbxFileSystem
                    .forAccount(mDbxAcctMgr.getLinkedAccount());
        } else {
            /* Might want to navigate to Dropbox signup Activity here */
        }
    } catch (Unauthorized e) {
        Log.e(TAG, e.getMessage(), e); 
    } catch (InvalidPathException e) {
        Log.e(TAG, e.getMessage(), e);
    } catch (DbxException e) {
        Log.e(TAG, e.getMessage(), e);
    }

dbxFs初始化此步骤并准备使用后,否则由于异常而为null。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Dropbox Sync API取消上传

来自分类Dev

Dropbox Core API和Sync API

来自分类Dev

Dropbox Sync API首次在iOS中同步

来自分类Dev

Dropbox Sync API-不满意的链接错误

来自分类Dev

OSX Dropbox Sync API错误-无法验证链接请求

来自分类Dev

Dropbox Sync API的多用户功能(共享文件夹)

来自分类Dev

Dropobx Sync API不会更新

来自分类Dev

Dropbox Smart Sync 18.04 LTS

来自分类Dev

Microsoft的Sync Framework是否可以通过Web API与.Net Membership / Roles一起使用?

来自分类Dev

Amazon Cognito Sync演示的API密钥

来自分类Dev

使用Dropbox API批量上传

来自分类Dev

使用Ruby API从Dropbox下载

来自分类Dev

生产中使用相同Dropbox API密钥的多个iOS应用?

来自分类Dev

与Kubernetes主API的Kube代理交互:config-sync-period

来自分类Dev

使用PHP的Dropbox API在Dropbox中获取文件的内容

来自分类Dev

Android Studio + Dropbox-android-sync-sdk-1.1.2

来自分类Dev

将旧邮件从Gmail迁移到Dropbox / Sync.com

来自分类Dev

在Django中使用python dropbox API

来自分类Dev

Dropbox Core API:不建议使用的方法

来自分类Dev

使用Dropbox API还原已删除的文件

来自分类Dev

使用 DropBox Core API 时出现 NoClassDefFoundError

来自分类Dev

如何正确使用sync.Cond?

来自分类Dev

如何使用Dart future.sync方法

来自分类Dev

无法使用mongodb sync打开Realm

来自分类Dev

Sequelize ORM不能使用sync()

来自分类Dev

[WIN API]为什么WriteFile(sync)和ReadFile(sync)共享同一个HANDLE会导致ReadFile错误?

来自分类Dev

在不使用closeFuture()。sync()的情况下在Netty中运行多个服务器

来自分类Dev

通过多个Windows 7用户帐户使用Google Drive Sync桌面应用程序

来自分类Dev

对多个脱机(局域网连接)本地数据库使用Microsoft Sync Framework吗?

Related 相关文章

  1. 1

    Dropbox Sync API取消上传

  2. 2

    Dropbox Core API和Sync API

  3. 3

    Dropbox Sync API首次在iOS中同步

  4. 4

    Dropbox Sync API-不满意的链接错误

  5. 5

    OSX Dropbox Sync API错误-无法验证链接请求

  6. 6

    Dropbox Sync API的多用户功能(共享文件夹)

  7. 7

    Dropobx Sync API不会更新

  8. 8

    Dropbox Smart Sync 18.04 LTS

  9. 9

    Microsoft的Sync Framework是否可以通过Web API与.Net Membership / Roles一起使用?

  10. 10

    Amazon Cognito Sync演示的API密钥

  11. 11

    使用Dropbox API批量上传

  12. 12

    使用Ruby API从Dropbox下载

  13. 13

    生产中使用相同Dropbox API密钥的多个iOS应用?

  14. 14

    与Kubernetes主API的Kube代理交互:config-sync-period

  15. 15

    使用PHP的Dropbox API在Dropbox中获取文件的内容

  16. 16

    Android Studio + Dropbox-android-sync-sdk-1.1.2

  17. 17

    将旧邮件从Gmail迁移到Dropbox / Sync.com

  18. 18

    在Django中使用python dropbox API

  19. 19

    Dropbox Core API:不建议使用的方法

  20. 20

    使用Dropbox API还原已删除的文件

  21. 21

    使用 DropBox Core API 时出现 NoClassDefFoundError

  22. 22

    如何正确使用sync.Cond?

  23. 23

    如何使用Dart future.sync方法

  24. 24

    无法使用mongodb sync打开Realm

  25. 25

    Sequelize ORM不能使用sync()

  26. 26

    [WIN API]为什么WriteFile(sync)和ReadFile(sync)共享同一个HANDLE会导致ReadFile错误?

  27. 27

    在不使用closeFuture()。sync()的情况下在Netty中运行多个服务器

  28. 28

    通过多个Windows 7用户帐户使用Google Drive Sync桌面应用程序

  29. 29

    对多个脱机(局域网连接)本地数据库使用Microsoft Sync Framework吗?

热门标签

归档