Reputation: 3912
I'm trying to upload a file to dropbox. I've followed the tutorial from the official site but, now my app crashes and I'm getting this in logCat:
09-11 22:19:13.519: E/dalvikvm(2856): Could not find class 'org.json.simple.JSONArray', referenced from method com.dropbox.client2.DropboxAPI.revisions
09-11 22:19:13.519: W/dalvikvm(2856): VFY: unable to resolve check-cast 296 (Lorg/json/simple/JSONArray;) in Lcom/dropbox/client2/DropboxAPI;
09-11 22:19:13.519: D/dalvikvm(2856): VFY: replacing opcode 0x1f at 0x0053
09-11 22:19:13.519: E/dalvikvm(2856): Could not find class 'org.json.simple.JSONArray', referenced from method com.dropbox.client2.DropboxAPI.search
09-11 22:19:13.519: W/dalvikvm(2856): VFY: unable to resolve instanceof 296 (Lorg/json/simple/JSONArray;) in Lcom/dropbox/client2/DropboxAPI;
09-11 22:19:13.519: D/dalvikvm(2856): VFY: replacing opcode 0x20 at 0x006e
09-11 22:19:13.639: E/dalvikvm(2856): Could not find class 'org.json.simple.parser.JSONParser', referenced from method com.dropbox.client2.RESTUtility.parseAsJSON
09-11 22:19:13.639: W/dalvikvm(2856): VFY: unable to resolve new-instance 298 (Lorg/json/simple/parser/JSONParser;) in Lcom/dropbox/client2/RESTUtility;
09-11 22:19:13.639: D/dalvikvm(2856): VFY: replacing opcode 0x22 at 0x001d
09-11 22:19:13.639: W/dalvikvm(2856): VFY: unable to resolve exception class 299 (Lorg/json/simple/parser/ParseException;)
09-11 22:19:13.639: W/dalvikvm(2856): VFY: unable to find exception handler at addr 0x50
09-11 22:19:13.639: W/dalvikvm(2856): VFY: rejected Lcom/dropbox/client2/RESTUtility;.parseAsJSON (Lorg/apache/http/HttpResponse;)Ljava/lang/Object;
09-11 22:19:13.639: W/dalvikvm(2856): VFY: rejecting opcode 0x0d at 0x0050
09-11 22:19:13.639: W/dalvikvm(2856): VFY: rejected Lcom/dropbox/client2/RESTUtility;.parseAsJSON (Lorg/apache/http/HttpResponse;)Ljava/lang/Object;
09-11 22:19:13.639: W/dalvikvm(2856): Verifier rejected class Lcom/dropbox/client2/RESTUtility;
09-11 22:19:13.639: D/AndroidRuntime(2856): Shutting down VM
09-11 22:19:13.639: W/dalvikvm(2856): threadid=1: thread exiting with uncaught exception (group=0x40a361f8)
09-11 22:19:13.649: E/AndroidRuntime(2856): FATAL EXCEPTION: main
09-11 22:19:13.649: E/AndroidRuntime(2856): java.lang.VerifyError: com/dropbox/client2/RESTUtility
09-11 22:19:13.649: E/AndroidRuntime(2856): at com.dropbox.client2.android.AuthActivity.startWebAuth(AuthActivity.java:421)
09-11 22:19:13.649: E/AndroidRuntime(2856): at com.dropbox.client2.android.AuthActivity.onResume(AuthActivity.java:289)
09-11 22:19:13.649: E/AndroidRuntime(2856): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1154)
09-11 22:19:13.649: E/AndroidRuntime(2856): at android.app.Activity.performResume(Activity.java:4539)
09-11 22:19:13.649: E/AndroidRuntime(2856): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434)
09-11 22:19:13.649: E/AndroidRuntime(2856): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472)
09-11 22:19:13.649: E/AndroidRuntime(2856): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986)
09-11 22:19:13.649: E/AndroidRuntime(2856): at android.app.ActivityThread.access$600(ActivityThread.java:123)
09-11 22:19:13.649: E/AndroidRuntime(2856): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
09-11 22:19:13.649: E/AndroidRuntime(2856): at android.os.Handler.dispatchMessage(Handler.java:99)
09-11 22:19:13.649: E/AndroidRuntime(2856): at android.os.Looper.loop(Looper.java:137)
09-11 22:19:13.649: E/AndroidRuntime(2856): at android.app.ActivityThread.main(ActivityThread.java:4424)
09-11 22:19:13.649: E/AndroidRuntime(2856): at java.lang.reflect.Method.invokeNative(Native Method)
09-11 22:19:13.649: E/AndroidRuntime(2856): at java.lang.reflect.Method.invoke(Method.java:511)
09-11 22:19:13.649: E/AndroidRuntime(2856): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-11 22:19:13.649: E/AndroidRuntime(2856): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-11 22:19:13.649: E/AndroidRuntime(2856): at dalvik.system.NativeStart.main(Native Method)
Also Here is my code:
public class DataExport extends Activity implements OnClickListener {
private Button back, save, exportAll, clientExport, dateExport;
private DatabaseHelper db;
private DatePicker datepicker;
private ArrayList<ChildRecord> allChildRecords;
private String childName;
// In the class declaration section:
final static private String APP_KEY = "mykey";
final static private String APP_SECRET = "secret";
// final static private AccessType ACCESS_TYPE =
// AccessType.INSERT_APP_ACCESS_TYPE;
final static private AccessType ACCESS_TYPE = AccessType.APP_FOLDER;
// In the class declaration section:
private DropboxAPI<AndroidAuthSession> mDBApi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.data_export);
initWidgets();
// And later in some initialization function:
AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET);
AndroidAuthSession session = new AndroidAuthSession(appKeys,
ACCESS_TYPE);
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
// MyActivity below should be your activity class name
mDBApi.getSession().startAuthentication(this);
}
protected void onResume() {
super.onResume();
if (mDBApi.getSession().authenticationSuccessful()) {
try {
// Required to complete auth, sets the access token on the
// session
mDBApi.getSession().finishAuthentication();
AccessTokenPair tokens = mDBApi.getSession()
.getAccessTokenPair();
} catch (IllegalStateException e) {
Log.i("DbAuthLog", "Error authenticating", e);
}
}
}
private void initWidgets() {
allChildRecords = new ArrayList<ChildRecord>();
db = new DatabaseHelper(this);
back = (Button) findViewById(R.id.data_export_back);
back.setOnClickListener(this);
save = (Button) findViewById(R.id.data_export_save);
save.setOnClickListener(this);
exportAll = (Button) findViewById(R.id.data_export_all);
exportAll.setOnClickListener(this);
clientExport = (Button) findViewById(R.id.data_export_child_export);
clientExport.setOnClickListener(this);
dateExport = (Button) findViewById(R.id.data_export_date_export);
dateExport.setOnClickListener(this);
datepicker = (DatePicker) findViewById(R.id.data_export_datepicker);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.data_export_back:
finish();
break;
case R.id.data_export_child_export:
// export for selected child
displayChildDialog();
break;
case R.id.data_export_date_export:
// export for selected date
db.openDB();
try {
String dateChoosen = datepicker.getDayOfMonth() + "/"
+ (datepicker.getMonth() + 1) + "/"
+ datepicker.getYear();
exportDateInCSV(
"Export-for-date-" + dateChoosen.replace("/", "-"),
db.getAssessmentsForDate(dateChoosen), false);
} catch (IOException e1) {
e1.printStackTrace();
}
db.closeDB();
break;
case R.id.data_export_all:
// export all data
try {
ArrayList<Assessment> allAssessments = new ArrayList<Assessment>();
DatabaseHelper helper = new DatabaseHelper(this);
helper.openDB();
allAssessments.addAll(helper.getAllAsssessments());
allAssessments = helper.getAllAsssessments();
exportDateInCSV("AllDateExport", allAssessments, true);
helper.closeDB();
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}
private void displayChildDialog() {
final AlertDialog builder = new AlertDialog.Builder(this).create();
builder.setMessage(getString(R.string.insert_password_to_continue));
final ListView input = new ListView(this);
input.setId(android.R.id.list);
builder.setView(input);
db.openDB();
allChildRecords = db.getAllChildren();
db.closeDB();
SimpleArrayAdapter adapter = new SimpleArrayAdapter(this,
allChildRecords);
input.setAdapter(adapter);
input.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
childName = allChildRecords.get(position).getName();
db.openDB();
try {
exportDateInCSV(
childName,
db.getAssessmentsforChild(allChildRecords.get(
position).getChildID()), true);
} catch (IOException e1) {
e1.printStackTrace();
}
db.closeDB();
builder.dismiss();
}
});
builder.show();
}
public void exportDateInCSV(final String file_name,
final ArrayList<Assessment> assessments, final boolean dropBox)
throws IOException {
File folder = new File(Environment.getExternalStorageDirectory()
+ "/Connell");
boolean var = false;
if (!folder.exists())
var = folder.mkdir();
System.out.println("" + var);
final String filename = folder.toString() + "/" + file_name + ".csv";
// show waiting screen
CharSequence contentTitle = getString(R.string.app_name);
final ProgressDialog progDailog = ProgressDialog.show(DataExport.this,
contentTitle, "Exporting data...", true);// please
// wait
new Thread() {
public void run() {
try {
FileWriter fw = new FileWriter(filename);
fw.append("ChildID");
fw.append(',');
fw.append("Parent1Name");
fw.append(',');
fw.append("Parent2Name");
fw.append(',');
fw.append("ChildName");
fw.append(',');
fw.append("ChildDOB");
fw.append(',');
fw.append("ChildGender");
fw.append(',');
fw.append("Child Height");
fw.append(',');
fw.append("Weight lbs");
fw.append(',');
fw.append("Ethnicity");
fw.append(',');
fw.append("ChildType");
fw.append(',');
fw.append("AssessmentID");
fw.append(',');
// AssessmentType DoctorName AssessmentDate Q1 Q2
fw.append("AssessmentType");
fw.append(',');
fw.append("DoctorName");
fw.append(',');
fw.append("AssessmentDate");
fw.append(',');
for (int n = 0; n < assessments.get(0).getQuestions()
.size(); n++) {
fw.append("Q" + (n + 1));
fw.append(',');
}
fw.append("RL");
fw.append(',');
fw.append("ATR");
fw.append(',');
fw.append("Anxiety");
fw.append(',');
fw.append("Depression");
fw.append(',');
fw.append("Anger");
fw.append(',');
fw.append("PTSD-Instrusion");
fw.append(',');
fw.append("PTSD-Avoidance");
fw.append(',');
fw.append("PTSD-Arousal");
fw.append(',');
fw.append("PTSD-Total");
fw.append(',');
fw.append("Dissociation");
fw.append(',');
fw.append("SexualConcerns");
fw.append(',');
fw.append('\n');
//
ChildRecord child;
for (int i = 0; i < assessments.size(); i++) {
db = new DatabaseHelper(DataExport.this);
db.openDB();
child = db.getChild(assessments.get(i).getChildID());
fw.append(assessments.get(i).getChildID() + "");
fw.append(",");
fw.append(child.getParent1());
fw.append(",");
fw.append(child.getParent2());
fw.append(",");
fw.append(child.getName());
fw.append(",");
fw.append(child.getDob());
fw.append(",");
switch (child.getGender()) {
case 1:
fw.append("Male");
break;
case 2:
fw.append("Female");
break;
}
fw.append(",");
String[] fullHeight = child.getHeight().split("\"");
fw.append(fullHeight[0].replace("\"", "") + "in" + " "
+ fullHeight[1] + "ft");
fw.append(",");
fw.append(child.getWeight() + " lbs");
fw.append(",");
fw.append(getStringFromArray(R.array.ethnicity_array,
child.getEthnicity()));
fw.append(",");
switch (child.getType()) {
case 1:
fw.append("Biologycal child");
break;
case 2:
fw.append("Foster child");
break;
case 3:
fw.append("Other");
break;
}
fw.append(",");
fw.append(assessments.get(i).getId() + "");
fw.append(",");
fw.append("TSCYC");// edit later//add option for //
// types
fw.append(",");
fw.append(db.getDoctorNameById(assessments.get(i)
.getDoctorID()));
fw.append(",");
fw.append(assessments.get(i).getDate());
fw.append(",");
int RL = 0;
ArrayList<Question> questions = new ArrayList<Question>();
for (int n = 0; n < assessments.get(i).getQuestions()
.size(); n++) {
questions = assessments.get(i).getQuestions();
int answer = questions.get(n).getAnswer();
if (answer == 1) {
RL++;
}
fw.append(answer + "");
fw.append(",");
}
fw.append(RL + "");
fw.append(",");
int ATR = questions.get(8).getAnswer()
+ questions.get(29).getAnswer()
+ questions.get(36).getAnswer()
+ questions.get(39).getAnswer()
+ questions.get(50).getAnswer()
+ questions.get(59).getAnswer()
+ questions.get(63).getAnswer()
+ questions.get(76).getAnswer()
+ questions.get(78).getAnswer();
fw.append(ATR + "");
fw.append(",");
// Q7+Q21+Q31+Q32+Q42+Q44+Q57+Q67+Q76
int anxiety = questions.get(6).getAnswer()
+ questions.get(20).getAnswer()
+ questions.get(30).getAnswer()
+ questions.get(31).getAnswer()
+ questions.get(41).getAnswer()
+ questions.get(43).getAnswer()
+ questions.get(56).getAnswer()
+ questions.get(66).getAnswer()
+ questions.get(75).getAnswer();
fw.append(anxiety + "");
fw.append(",");
// Q2+Q18+Q41+Q54+Q61+Q68+Q71+Q84+Q88
int depression = questions.get(1).getAnswer()
+ questions.get(17).getAnswer()
+ questions.get(40).getAnswer()
+ questions.get(53).getAnswer()
+ questions.get(60).getAnswer()
+ questions.get(67).getAnswer()
+ questions.get(70).getAnswer()
+ questions.get(83).getAnswer()
+ questions.get(87).getAnswer();
fw.append(depression + "");
fw.append(",");
// Q1+Q15+Q23+Q34+Q43+Q58+Q62+Q87+Q90
int anger = questions.get(0).getAnswer()
+ questions.get(14).getAnswer()
+ questions.get(22).getAnswer()
+ questions.get(33).getAnswer()
+ questions.get(42).getAnswer()
+ questions.get(57).getAnswer()
+ questions.get(61).getAnswer()
+ questions.get(86).getAnswer()
+ questions.get(89).getAnswer();
fw.append(anger + "");
fw.append(",");
// Q4+Q11+Q19+Q24+Q27+Q36+Q63+Q69+Q80
int intrusion = questions.get(3).getAnswer()
+ questions.get(10).getAnswer()
+ questions.get(18).getAnswer()
+ questions.get(23).getAnswer()
+ questions.get(26).getAnswer()
+ questions.get(35).getAnswer()
+ questions.get(62).getAnswer()
+ questions.get(68).getAnswer()
+ questions.get(79).getAnswer();
fw.append(intrusion + "");
fw.append(",");
// Q8+Q13+Q29+Q39+Q49+Q55+Q70+Q72+Q81
int avoidance = questions.get(7).getAnswer()
+ questions.get(12).getAnswer()
+ questions.get(28).getAnswer()
+ questions.get(38).getAnswer()
+ questions.get(48).getAnswer()
+ questions.get(54).getAnswer()
+ questions.get(69).getAnswer()
+ questions.get(71).getAnswer()
+ questions.get(80).getAnswer();
fw.append(avoidance + "");
fw.append(",");
// Q10+Q17+Q26+Q45+Q47+Q48+Q56+Q74+Q82
int arousal = questions.get(9).getAnswer()
+ questions.get(16).getAnswer()
+ questions.get(25).getAnswer()
+ questions.get(44).getAnswer()
+ questions.get(46).getAnswer()
+ questions.get(55).getAnswer()
+ questions.get(73).getAnswer()
+ questions.get(81).getAnswer();
fw.append(arousal + "");
fw.append(",");
int total = intrusion - avoidance + arousal;
fw.append(total + "");
fw.append(",");
// Q5+Q25+Q28+Q33+Q38+Q46+Q52+Q78+Q85
int dissociation = questions.get(4).getAnswer()
+ questions.get(24).getAnswer()
+ questions.get(27).getAnswer()
+ questions.get(32).getAnswer()
+ questions.get(37).getAnswer()
+ questions.get(45).getAnswer()
+ questions.get(51).getAnswer()
+ questions.get(77).getAnswer()
+ questions.get(84).getAnswer();
fw.append(dissociation + "");
fw.append(",");
// Q6+Q12+Q16+Q20+Q35+Q50+Q59+Q65+Q75
int sexualConcerns = questions.get(5).getAnswer()
+ questions.get(11).getAnswer()
+ questions.get(15).getAnswer()
+ questions.get(19).getAnswer()
+ questions.get(34).getAnswer()
+ questions.get(49).getAnswer()
+ questions.get(58).getAnswer()
+ questions.get(64).getAnswer()
+ questions.get(74).getAnswer();
fw.append(sexualConcerns + "");
fw.append(",");
fw.append("\n");
db.closeDB();
}
fw.close();
if (dropBox) {
File file = new File("working-draft.txt");
FileInputStream inputStream = new FileInputStream(file);
Entry response = mDBApi.putFile(file_name + ".csv",
inputStream, file.length(), null, null);
Log.v("--", response.toString() + " #!@!");
// Log.i("DbExampleLog", "The uploaded file's rev is: "
// + newEntry.rev);
}
} catch (Exception e) {
}
progDailog.dismiss();
}
}.start();
}
private String getStringFromArray(int id, int index) {
String[] bases = getResources().getStringArray(id);
return bases[index];
}
}
Sorry for long code, but I think this is the best way to describe the problem. So finally can anyone help me solve this problem. Thanks
Upvotes: 1
Views: 2358
Reputation: 7552
May be you just only have included the "dropbox-android-sdk-1.6.3.jar" in your libs directory
Include all the .jar files that is showing this graph
Do not include the commons-logging-1.1.1.jar because you will have problems.
Hope this help.
Upvotes: 2
Reputation: 276
The ultimate solution should be to: 1. Open both jar files; dropbox-sync-sdk-android.jar and dropbox-android-sdk-1.6.1.jar 2. Delete the client2 folder in the former sdk and replace it with client2 from the latter 3. Then download a copy of json_simple-1.1.jar. 4. Copy json_simple-1.1.jar and dropbox-sync-sdk-android.jar into your libs folder and include these two in your project properties; this will help to avoid future errors
NB: You don't need to include dropbox-android-sdk-1.6.1.jar anywhere.
Upvotes: 0
Reputation: 2032
It looks like you have dependency issues. There are several lines in your error where it's saying it can't find classes:
Could not find class 'org.json.simple.JSONArray', referenced from method com.dropbox.client2.DropboxAPI.revisions
Could not find class 'org.json.simple.JSONArray', referenced from method com.dropbox.client2.DropboxAPI.search
Could not find class 'org.json.simple.parser.JSONParser', referenced from method com.dropbox.client2.RESTUtility.parseAsJSON
Do you have the JAR containing these classes as part of your project? If so, are they on your buildpath? That could explain what you're seeing.
Upvotes: 4