Drop Box erro no code para baixa arquivo e executar

estou com um problema encontrei alguma coisa na net e fui adicionando ao meu projeto
ideia é ao clica no botão update irá fazer o download do outro app que está no drop box
aparece a msg de download mais na verdade não faz o download
nota:
app key,token e secret key retirei do code para posta aqui :stuck_out_tongue:

package projetoleandro.myapplication;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.dropbox.client2.DropboxAPI;
import com.dropbox.client2.android.AndroidAuthSession;
import com.dropbox.client2.session.AppKeyPair;

import java.io.File;
import java.io.FileOutputStream;

import static projetoleandro.myapplication.R.menu.main;

public class MainActivity extends Activity {

private void AutoUpdate (String NameOfNewApplication, String downloadPathFrom)
{
    DropboxDownloadPathTo = NameOfNewApplication;
    DropboxDownloadPathFrom = downloadPathFrom;
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(getApplicationContext(), "Download file ...", Toast.LENGTH_SHORT).show();
            Thread th = new Thread(new Runnable() {
                public void run() {
                    File file = new File(getApplicationContext().getFilesDir()+"/"+DropboxDownloadPathTo + DropboxDownloadPathFrom.substring(DropboxDownloadPathFrom.lastIndexOf('.')));
                    if (file.exists()) file.delete();
                    try {
                        FileOutputStream outputStream = new FileOutputStream(file);
                        dropbox.dropboxAPI.getFile(DropboxDownloadPathFrom, null, outputStream, null);
                        getMain().runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(getApplicationContext(), "File successfully downloaded.", Toast.LENGTH_SHORT).show();
                            }
                        });
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    if(file.exists())
                    {
                        while (file.length() == 0)
                        {
                            try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}
                        }

                        Intent intent = new Intent(Intent.ACTION_VIEW);
                        intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);
                    }
                }
            });
            th.start();
        }
    });
}


static DropboxAPI<AndroidAuthSession> dropboxAPI;
private static final String APP_KEY =      "pw6tf664jiu3r36";
private static final String APP_SECRET =   "1fkjhsgsoxlwikl";
private static final String ACCESSTOKEN = "uE4wPiT6Nz4AAAAAAAAJrqGi6CpXEfU3e6jYngGkAHXhF2-MZdExmhAPWQB9ujS-";
private DropboxAPI.UploadRequest request;
private AndroidAuthSession buildSession()
{
    AppKeyPair appKeyPair = new AppKeyPair(APP_KEY, APP_SECRET);
    AndroidAuthSession session = new AndroidAuthSession(appKeyPair);
    session.setOAuth2AccessToken(ACCESSTOKEN);
    return session;
}
static final int UploadFromSelectApp = 9501;
static final int UploadFromFilemanager = 9502;
public static String DropboxUploadPathFrom = "";
public static String DropboxUploadName = "";
public static String DropboxDownloadPathFrom = "";
public static String DropboxDownloadPathTo = "";


public String getPath(Context context, Uri contentUri) {
    Cursor cursor = null;
    try {
        String[] proj = { MediaStore.Images.Media.DATA, MediaStore.Video.Media.DATA, MediaStore.Audio.Media.DATA };
        cursor = context.getContentResolver().query(contentUri,  proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        String s = cursor.getString(column_index);
        if(s!=null) {
            cursor.close();
            return s;
        }
    }
    catch(Exception e){}
    try {
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
        cursor.moveToFirst();
        String s = cursor.getString(column_index);
        if(s!=null) {
            cursor.close();
            return s;
        }
    }
    catch(Exception e){}
    try {
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
        cursor.moveToFirst();
        String s = cursor.getString(column_index);
        cursor.close();
        return s;
    }
    finally {
        if (cursor != null) {
            cursor.close();
        }
    }
}

protected MainActivity getMain()
{
    return this;
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button = (Button) findViewById(R.id.button1);
    Button button1 = (Button) findViewById(R.id.update);

    button1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            AutoUpdate ("app-debug.apk", getApplicationContext().getFilesDir()+"app-debug.apk");
        }
    });



    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            startActivity(new Intent("projetoleandro.myapplication.list"));
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.

    getMenuInflater().inflate(main, menu);
    return true;
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    finish();
}

}

Android Monitor
06-01 12:51:58.538 30277-30308/projetoleandro.myapplication W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method ‘com.dropbox.client2.DropboxAPI$DropboxFileInfo com.dropbox.client2.DropboxAPI.getFile(java.lang.String, java.lang.String, java.io.OutputStream, com.dropbox.client2.ProgressListener)’ on a null object reference
06-01 12:51:58.538 30277-30308/projetoleandro.myapplication W/System.err: at projetoleandro.myapplication.MainActivity$1$1.run(MainActivity.java:111)
06-01 12:51:58.538 30277-30308/projetoleandro.myapplication W/System.err: at java.lang.Thread.run(Thread.java:761)