Java Android-尝试连接到Dropbox API版本2
我试图通过Android Studio连接到Dropbox api版本2,但我遇到了以下异常:Java Android-尝试连接到Dropbox API版本2,java,android,dropbox,dropbox-api,Java,Android,Dropbox,Dropbox Api,我试图通过Android Studio连接到Dropbox api版本2,但我遇到了以下异常: 04-27 23:49:33.356 6482-6482/com.example.user.trackyournevi E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.us
04-27 23:49:33.356 6482-6482/com.example.user.trackyournevi
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.user.trackyournevi, PID: 6482
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.user.trackyournevi/com.example.user.trackyournevi.Drop
boxActivity}: android.content.ActivityNotFoundException: Unable to find
explicit activity class
{com.example.user.trackyournevi/com.dropbox.client2.android.AuthActivity};
have you declared this activity in your AndroidManifest.xml?
我的Dropbox活动:
public class DropboxActivity extends AppCompatActivity implements
View.OnClickListener {
private LinearLayout container;
private boolean isUserLoggedIn;
private Button btnLogin;
private Button btnUpload;
private Button btnDownload;
private DropboxAPI<AndroidAuthSession> mDropboxApi;
private final static String DROPBOX_FILE_DIR = "/TrackYourNevi/";
private static final int IMAGE_GALLERY_REQUEST = 20;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dropbox);
loggedIn(false);
//callback method
initializeSession();
}
private void initializeSession() {
//store app key and secret key
AppKeyPair appKeys = new AppKeyPair(getResources().getString(R.string.DROPBOX_APP_KEY),
getResources().getString(R.string.DROPBOX_APP_SECRET));
AndroidAuthSession session = new AndroidAuthSession(appKeys);
//Pass app key pair to new DropboxApi object
mDropboxApi = new DropboxAPI<AndroidAuthSession>(session);
//start session
mDropboxApi.getSession().startOAuth2Authentication(DropboxActivity.this);
}
@Override
public void onResume() {
super.onResume();
if(mDropboxApi.getSession().authenticationSuccessful()) {
try {
// Required to complete auth, sets the access token on the session
mDropboxApi.getSession().finishAuthentication();
String accessToken = mDropboxApi.getSession().getOAuth2AccessToken();
loggedIn(true);
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.dxbLoginButton:
if(isUserLoggedIn) {
mDropboxApi.getSession().unlink();
loggedIn(false);
} else
mDropboxApi.getSession().startOAuth2Authentication(DropboxActivity.this);
break;
case R.id.dxbUploadButton:
//invoke the image gallery using an implict intent
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
//Where do we want to find the data
File pictureDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
String pictureDitrectoryPath = pictureDirectory.getPath() + "/" + getResources().getString(R.string.image_folder_name);
//Get URI representation
Uri data = Uri.parse(pictureDitrectoryPath);
//Set the data and type. get all images from jpg type
photoPickerIntent.setDataAndType(data, "image/jpg");
startActivityForResult(photoPickerIntent, IMAGE_GALLERY_REQUEST);
break;
case R.id.dxbDownloanButton:
break;
default:
break;
}
}
公共类DropboxActivity扩展了AppCompatActivity实现
View.OnClickListener{
专用线性布局集装箱;
私有布尔值isUserLoggedIn;
私人按钮;
专用按钮btnUpload;
私人按钮BTN下载;
私有DropboxAPI mDropboxApi;
私有最终静态字符串DROPBOX_FILE_DIR=“/TrackYourNevi/”;
私有静态最终int图像\u画廊\u请求=20;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u dropbox);
loggedIn(假);
//回调方法
初始化会话();
}
私有无效初始化会话(){
//存储应用程序密钥和密钥
AppKeyPair appKeys=新的AppKeyPair(getResources().getString(R.string.DROPBOX\u APP\u KEY),
getResources().getString(R.string.DROPBOX_APP_SECRET));
AndroidAuthSession会话=新的AndroidAuthSession(appKeys);
//将应用程序密钥对传递给新的DropboxApi对象
mDropboxApi=新的DropboxAPI(会话);
//开始会话
mDropboxApi.getSession().startOAuth2Authentication(DropboxActivity.this);
}
@凌驾
恢复时公开作废(){
super.onResume();
如果(mDropboxApi.getSession().authenticationSuccessful()){
试一试{
//需要完成身份验证,请在会话上设置访问令牌
mDropboxApi.getSession().finishAuthentication();
字符串accessToken=mDropboxApi.getSession().getOAuth2AccessToken();
loggedIn(真);
}捕获(非法状态){
e、 printStackTrace();
}
}
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.dxbLoginButton:
if(isUserLoggedIn){
mDropboxApi.getSession().unlink();
loggedIn(假);
}否则
mDropboxApi.getSession().startOAuth2Authentication(DropboxActivity.this);
打破
案例R.id.dxbUploadButton:
//使用隐式意图调用图像库
意向照片采集器内容=新意向(意向.行动\u采集器);
//我们想在哪里找到数据
文件pictureDirectory=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY\u PICTURES);
String pictureDirectory路径=pictureDirectory.getPath()+“/”+getResources().getString(R.String.image\u文件夹\u名称);
//获取URI表示
Uri数据=Uri.parse(PictureDirectoryPath);
//设置数据和类型。从jpg类型获取所有图像
photoPickerIntent.setDataAndType(数据,“图像/jpg”);
startActivityForResult(照片采集器、图像库请求);
打破
案例R.id.dxbDownloanButton:
打破
违约:
打破
}
}
}
my manifiest.xml包含以下数据:
activity android:name=".DropboxActivity" android:launchMode="singleTask"
intent-filter
data android:scheme="db-key"
action android:name="android.intent.action.VIEW"
category android:name="android.intent.category.BROWSABLE"
category android:name="android.intent.category.DEFAULT"
intent-filter
activity
活动android:name=“.DropboxActivity”android:launchMode=“singleTask”
意图过滤器
数据类型:scheme=“db key”
action-android:name=“android.intent.action.VIEW”
类别android:name=“android.intent.category.BROWSABLE”
类别android:name=“android.intent.category.DEFAULT”
意图过滤器
活动
看起来我像在其他教程中一样定义了所有内容,但仍然不起作用。
是否有人发现问题并可以帮助我?您安装了什么Dropbox库?如果您试图使用Dropbox API v2(您应该这样做),那么应该使用。您尝试使用的代码似乎是用于。还有。你在哪里看到API v2 Java SDK的?我一直转到GitHub获取一个没有任何SDK的示例代码。这里有API v2 Java SDK的链接(在我之前的评论中也有链接):您安装了什么Dropbox库?如果您试图使用Dropbox API v2(您应该这样做),那么应该使用。您尝试使用的代码似乎是用于。还有。你在哪里看到API v2 Java SDK的?我一直移动到GitHub获取一个示例代码,但没有任何SDKHere的API v2 Java SDK链接(在我之前的评论中也有链接):