Android 从我的应用程序访问dropbox文件,下载并上传文件到dropbox
在我的应用程序中,我需要用户访问Dropbox,查看文件(所有文件夹),能够下载和上传图片和小型音频文件等文件。我已经尝试过dbroulete来理解这个概念。它也开始工作了。身份验证也很好。但我不知道如何执行下载/上传/查看所有文件等任务 我也读过关于“选择器”和“保存器”的文章,但我认为我应该使用“核心Api”。请在这方面指导我 如果有人能帮我再次搬家,我们将不胜感激Android 从我的应用程序访问dropbox文件,下载并上传文件到dropbox,android,dropbox,dropbox-api,Android,Dropbox,Dropbox Api,在我的应用程序中,我需要用户访问Dropbox,查看文件(所有文件夹),能够下载和上传图片和小型音频文件等文件。我已经尝试过dbroulete来理解这个概念。它也开始工作了。身份验证也很好。但我不知道如何执行下载/上传/查看所有文件等任务 我也读过关于“选择器”和“保存器”的文章,但我认为我应该使用“核心Api”。请在这方面指导我 如果有人能帮我再次搬家,我们将不胜感激 谢谢我现在使用Dropbox已经有一段时间了。我不需要查看目录,但我正在访问多个区域中的文件。如果你已经有你的核心Dropbo
谢谢我现在使用Dropbox已经有一段时间了。我不需要查看目录,但我正在访问多个区域中的文件。如果你已经有你的核心Dropbox工作,那么你可以写到任何文件夹,如果没有,将创建,与此
// located in your dropboxHelper class
public void writeToDropbox(File src) {
String directory1 = "/TopFolder/";
// Or for a sub folder
String orThisDirectory = "/TopFolder/SubFolder/";
myAsyncTask backup = new myAsyncTask(ctx, mDBApi, directory1, src);
backup.execute();
}
文件名将与您发送的文件相同。如果您需要Asynctask代码,我也可以包括它。请告诉我。
要提取文件,我使用以下基本代码
public void restore(String fileGet, File fileSave, String sPath,
String mFolder) {
File file = new File(fileGet);
try {
FileOutputStream outputStream = new FileOutputStream(fileSave);
otherAsyncTask restore = new otherAsyncTask (ctx, mDBApi,outputStream,
file, sPath, mFolder);
restore.execute();
}
这将包括上传和下载。我只使用核心API。如果您还需要AsyncTask代码,请询问。我想你可能有那个角色
更新
获取DropboxHelper的实例。把它放在你发送信息的班级里
// Dropbox setup
if (dropbox_option) {
mDropbox = new DropboxHelper(ctx);
if (!mDropbox.isLinked()) {
mDropbox.completeAuthenticationDropbox();
}
}
在Dropbox助手类中,我拥有所有连接代码和读写方法
public static DropboxHelper getInstance(Context context) {
if (mHelper == null) {
mHelper = new DropboxHelper(context);
}
return mHelper;
}
public static DropboxHelper getInstance() throws Exception {
if (mHelper == null)
throw new Exception("DropboxHelper not yet instantiated");
return mHelper;
}
public DropboxHelper(Context context) {
super();
ctx = context;
// create session
AndroidAuthSession session = buildSession();
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
if (isLinked()) {
AccessKeys = getKeys();
AccessTokenPair access = new AccessTokenPair(AccessKeys[0],
AccessKeys[1]);
mDBApi.getSession().setAccessTokenPair(access);
} else {
mDBApi.getSession().startAuthentication(ctx);
}
}
private String[] getKeys() {
prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
String key = prefs.getString(Global.DROPBOX_ACCESS_KEY_NAME, null);
String secret = prefs
.getString(Global.DROPBOX_ACCESS_SECRET_NAME, null);
if (key != null && secret != null) {
String[] ret = new String[2];
ret[0] = key;
ret[1] = secret;
return ret;
} else {
return null;
}
}
// Clear token
public void clearKeysToken() {
prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
Editor edit = prefs.edit();
edit.clear();
edit.commit();
}
protected void storeKeys(String key, String secret) {
// prefs = this.getSharedPreferences(ACCOUNT_PREFS_NAME, 0);
prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
Editor edit = prefs.edit();
edit.putString(Global.DROPBOX_ACCESS_KEY_NAME, key);
edit.putString(Global.DROPBOX_ACCESS_SECRET_NAME, secret);
edit.commit();
}
// Create a session
private AndroidAuthSession buildSession() {
AppKeyPair appKeyPair = new AppKeyPair(Global.APP_KEY,
Global.APP_SECRET);
AndroidAuthSession session;
String[] stored = getKeys();
if (stored != null) {
AccessTokenPair accessToken = new AccessTokenPair(stored[0],
stored[1]);
session = new AndroidAuthSession(appKeyPair,
Global.DROPBOX_ACCESS_TYPE, accessToken);
} else {
session = new AndroidAuthSession(appKeyPair,
Global.DROPBOX_ACCESS_TYPE);
}
return session;
}
// Complete authentication
public void completeAuthenticationDropbox() {
session = mDBApi.getSession();
// The next part must be inserted in the onResume() method of the
// activity from which session.startAuthentication() was called, so
// that Dropbox authentication completes properly.
if (session.authenticationSuccessful()) {
try {
// complete authentication
session.finishAuthentication();
// save login credentials
TokenPair tokens = session.getAccessTokenPair();
storeKeys(tokens.key, tokens.secret);
// setLoggedIn(true);
} catch (IllegalStateException e) {
Toast.makeText(ctx,
"Couldn't authenticate with Dropbox:" + e.getMessage(),
Toast.LENGTH_LONG).show();
Log.i(TAG, "Error authenticating", e);
} finally {
if (isLinked()) {
Log.d(TAG, "dropbox is linked");
} else {
Log.d(TAG, "Dropbox is NOT linked.");
}
}
} else {
Log.d(TAG, "WTF");
}
}
// Returns true if you are connected to Dropbox
public boolean isLinked() {
return mDBApi.getSession().isLinked();
}
public void logIn() {
Log.i(TAG, "Login");
mDBApi.getSession().startAuthentication(ctx);
}
公共静态DropboxHelper getInstance(上下文){
如果(mHelper==null){
mHelper=新DropboxHelper(上下文);
}
返回mHelper;
}
公共静态DropboxHelper getInstance()引发异常{
如果(mHelper==null)
抛出新异常(“DropboxHelper尚未实例化”);
返回mHelper;
}
公共DropboxHelper(上下文){
超级();
ctx=上下文;
//创建会话
AndroidAuthSession会话=buildSession();
mDBApi=new DropboxAPI。我想你会想使用。和应该会告诉你如何读取和写入文件。非常感谢。我对dropbox活动的了解仅限于示例应用程序DBRoulette。该应用程序的作用是访问dropbox并打开随机jpeg文件。另一方面,我需要查看文件、上传和下载广告到dropbox。你能进一步指导我吗。例如,如何实现你刚才提供的方法。不,我不需要同步部分