Darko Petkovski
Darko Petkovski

Reputation: 3912

Upload file to dropbox

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

Answers (3)

Led Machine
Led Machine

Reputation: 7552

May be you just only have included the "dropbox-android-sdk-1.6.3.jar" in your libs directory

enter image description here

Include all the .jar files that is showing this graph

enter image description here

enter image description here

Do not include the commons-logging-1.1.1.jar because you will have problems.

Hope this help.

Upvotes: 2

CodesmithX
CodesmithX

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

Prmths
Prmths

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

Related Questions