Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在android中的dropbox中上载SQlite数据库文件_Android_Sqlite_Dropbox_Dropbox Api - Fatal编程技术网

无法在android中的dropbox中上载SQlite数据库文件

无法在android中的dropbox中上载SQlite数据库文件,android,sqlite,dropbox,dropbox-api,Android,Sqlite,Dropbox,Dropbox Api,我想上传我的SQlite数据库文件到dropbox下面是我的代码 public class DropboxActivity extends Activity { private DropboxAPI<AndroidAuthSession> dropbox; private final static String FILE_DIR = Environment.getExternalStorageDirectory()+"/MyFolder/BD/Demo.sqlite"; pr

我想上传我的SQlite数据库文件到dropbox下面是我的代码

public class DropboxActivity extends Activity   {

private DropboxAPI<AndroidAuthSession> dropbox;

private final static String FILE_DIR = Environment.getExternalStorageDirectory()+"/MyFolder/BD/Demo.sqlite";
private final static String DROPBOX_NAME = "dropbox_prefs";
private final static String ACCESS_KEY = "key";
private final static String ACCESS_SECRET = "sec_key";
private boolean isLoggedIn;
private Button logIn;
private Button uploadFile;
private Button listFiles;
private LinearLayout container;

@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

    StrictMode.setThreadPolicy(policy); 
    logIn = (Button) findViewById(R.id.dropbox_login);
    uploadFile = (Button) findViewById(R.id.upload_file);
    listFiles = (Button) findViewById(R.id.list_files);
    container = (LinearLayout) findViewById(R.id.container_files);

    uploadFile.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            System.out.println("UPload");
            UploadFileToDropbox upload = new UploadFileToDropbox(DropboxActivity.this, dropbox, FILE_DIR);
            upload.execute();
        }
    });

    logIn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (isLoggedIn) {
                dropbox.getSession().unlink();
                loggedIn(false);
            } else {
                dropbox.getSession().startAuthentication(DropboxActivity.this);
            }
        }
    });
    listFiles.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            ListDropboxFiles list = new ListDropboxFiles(dropbox, FILE_DIR,
                    handler);
            list.execute();
        }
    });
    loggedIn(false);

    AndroidAuthSession session;
    AppKeyPair pair = new AppKeyPair(ACCESS_KEY, ACCESS_SECRET);

    SharedPreferences prefs = getSharedPreferences(DROPBOX_NAME, 0);
    String key = prefs.getString(ACCESS_KEY, null);
    String secret = prefs.getString(ACCESS_SECRET, null);

    if (key != null && secret != null) {
        AccessTokenPair token = new AccessTokenPair(key, secret);
        session = new AndroidAuthSession(pair, AccessType.APP_FOLDER, token);
    } else {
        session = new AndroidAuthSession(pair, AccessType.APP_FOLDER);
    }

    dropbox = new DropboxAPI<AndroidAuthSession>(session);
}

@Override
protected void onResume() {
    super.onResume();

    AndroidAuthSession session = dropbox.getSession();
    if (session.authenticationSuccessful()) {
        try {
            session.finishAuthentication();

            TokenPair tokens = session.getAccessTokenPair();
            SharedPreferences prefs = getSharedPreferences(DROPBOX_NAME, 0);
            Editor editor = prefs.edit();
            editor.putString(ACCESS_KEY, tokens.key);
            editor.putString(ACCESS_SECRET, tokens.secret);
            editor.commit();

            loggedIn(true);
        } catch (IllegalStateException e) {
            Toast.makeText(this, "Error during Dropbox authentication",
                    Toast.LENGTH_SHORT).show();
        }
    }
}

public void loggedIn(boolean isLogged) {
    isLoggedIn = isLogged;
    uploadFile.setEnabled(isLogged);
    listFiles.setEnabled(isLogged);
    logIn.setText(isLogged ? "Log out" : "Log in");
}

private final Handler handler = new Handler() {
    public void handleMessage(Message msg) {

        ArrayList<String> result = msg.getData().getStringArrayList("data");

        for (String fileName : result) {
            Log.i("ListFiles", fileName);

            TextView tv = new TextView(DropboxActivity.this);
            tv.setText(fileName);

            container.addView(tv);
        }
    }
};
getSelectedText在非活动输入连接上 在非活动InputConnection上设置ComposingText

上面的错误在下面给出一行

dropbox.putFile(路径,fileInputStream,tempFile.length(),null,null)


你知道我该怎么解决这个问题吗?

403:Forbidden表示你给Dropbox帐户的用户名和密码不正确@Code学徒:我给的是Dropbox帐户的用户名和密码正确403这样的错误通常表示OAuth请求不正确,例如错误的用户密钥、错误的nonce、过期的时间戳,SDK应该为您解决大部分问题,但我要检查的第一件事是您是否拥有正确的应用程序密钥和密码(特定于应用程序,AppKeyPair传递给AndroidAuthSession),以及访问令牌密钥和密码(特定于用户,AccessTokenPair传递给AndroidAuthSession)。
public class UploadFileToDropbox extends AsyncTask<Void, Void, Boolean> {

private DropboxAPI<?> dropbox;
private String path;
private Context context;

public UploadFileToDropbox(Context context, DropboxAPI<?> dropbox,
        String path) {
    this.context = context.getApplicationContext();
    this.dropbox = dropbox;
    this.path = path;
}

@Override
protected Boolean doInBackground(Void... params) {
    final File tempDir = context.getCacheDir();
    File tempFile;
    FileWriter fr;
    try {

        tempFile=new File(path);
        System.out.println("path "+path);
        FileInputStream fileInputStream = new FileInputStream(tempFile);
        dropbox.putFile(path, fileInputStream,tempFile.length(), null, null);
        tempFile.delete();
        return true;
    } catch (IOException e) {
        e.printStackTrace();
    } catch (DropboxException e) {
        e.printStackTrace();
    }

    return false;
}

@Override
protected void onPostExecute(Boolean result) {
    if (result) {
        Toast.makeText(context, "File Uploaded Sucesfully!",
                Toast.LENGTH_LONG).show();
    } else {
        Toast.makeText(context, "Failed to upload file", Toast.LENGTH_LONG)
                .show();
    }
}
DropboxServerException (nginx): 403 None (Forbidden)
at com.dropbox.client2.RESTUtility.parseAsJSON(RESTUtility.java:265)
at com.dropbox.client2.RESTUtility.execute(RESTUtility.java:415)
at com.dropbox.client2.DropboxAPI$BasicUploadRequest.upload(DropboxAPI.java:1119)
at com.dropbox.client2.DropboxAPI.putFile(DropboxAPI.java:1460)
at com.example.dropdemo.UploadFileToDropbox.doInBackground(UploadFileToDropbox.java:42)
at com.example.dropdemo.UploadFileToDropbox.doInBackground(UploadFileToDropbox.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Removing a connection that never existed!