2016-05-31 67 views
1

如何获取共享链接dropbox当用户上传图像,我不想保存链接到我的数据库?现在我的应用程序可以上传到收存箱的图像,但不能获得链接.. 当用户点击保存我wan't图片上传到Dropbox和保存到我的数据库链接如何使用android上传图片时从Dropbox获取共享链接?

这是我的代码

package com.emergency.e_place; 

import android.content.Context; 
import android.content.Intent; 
import android.database.Cursor; 
import android.graphics.Bitmap; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.provider.MediaStore; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageSwitcher; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

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

import java.io.File; 
import java.io.IOException; 
import java.io.InputStream; 

/** 
* Created by Eggy on 5/3/2016. 
*/ 
public class WC_Activity extends AppCompatActivity { 
    final String TAG = "DEBUG"; 
    private ImageSwitcher imageview; 
    private int PICK_IMAGE_REQUEST = 1; 
    public static Button button1; 
    public static Button button2; 
    public static Button button3; 
    public static Button button4; 
    public static TextView textview; 

    public static String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Emergency_Place"; 
    public static File Dir = new File(path); 



    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_wc); 

     Toolbar toolbar=(Toolbar)findViewById(R.id.toolbarWC); 
     setSupportActionBar(toolbar); 

     //ambil lokasi dari MainActivity 
     Intent myIntent = getIntent(); // gets the previously created intent 
     final String Latitude = myIntent.getStringExtra("Latitude"); // will return "FirstKeyValue" 
     final String Longitude= myIntent.getStringExtra("Longitude"); // will return "SecondKeyValue" 
     Log.d(TAG, "onLocationChanged: " + Longitude); 
     //editTextLocation.setText(Longitude+", "+Latitude); 
     //ambil lokasi dari MainActivity 

     /* 
     Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(takePicture, 0);//zero can be replaced with any action code 

     Intent pickPhoto = new Intent(Intent.ACTION_PICK, 
       android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
     startActivityForResult(pickPhoto , 1);//one can be replaced with any action code 
     */ 
     //button4 = (Button) findViewById(R.id.ChooseFile); 

     AndroidAuthSession session = buildSession(); 
     dropboxAPI = new DropboxAPI<AndroidAuthSession>(session); 
     Dir.mkdirs(); 


     Button ChooseImage = (Button) findViewById(R.id.ChooseImage); 
     ChooseImage.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       UploadToDropboxFromSelectedApp("imageWC/"+Latitude+"_"+Longitude); 
      } 
     }); 
    } 

    static DropboxAPI<AndroidAuthSession> dropboxAPI; 
    private static final String APP_KEY = "idzvjf1ekzxxxx"; 
    private static final String APP_SECRET = "idzvjf1ekzxxxx"; 
    private static final String ACCESSTOKEN = "yxlTAA5L3fAAAAAAAAAAB0L-ptbcKn1Cjc5YxIpUnZcTD6uGq-kCVDJ754MY3ARt"; 
    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 = ""; 


    private void UploadToDropboxFromSelectedApp (String uploadName) 
    { 
     DropboxUploadName = uploadName; 
     Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
     intent.setType("image/*"); 
     startActivityForResult(Intent.createChooser(intent, "Upload from ..."), UploadFromSelectApp); 
    } 

    @Override 
    protected void onActivityResult(final int requestCode, int resultCode, final Intent intent) { 

     Uri uri = intent.getData(); 

     try { 
      Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 
      Log.d(TAG, "niiih : " + String.valueOf(bitmap)); 

      ImageView imageView = (ImageView) findViewById(R.id.imageView); 
      imageView.setImageBitmap(bitmap); 
      imageView.getLayoutParams().height = 300; 
      imageView.getLayoutParams().width = 300; 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     Button Simpan = (Button) findViewById(R.id.btnSimpanWC); 
     Simpan.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (requestCode == UploadFromSelectApp) 
       { 
        Toast.makeText(getApplicationContext(), "Upload file ...", Toast.LENGTH_SHORT).show(); 
        final Uri uri = intent.getData(); 

        DropboxUploadPathFrom = getPath(getApplicationContext(), uri); 
        if(DropboxUploadPathFrom == null) { 
         DropboxUploadPathFrom = uri.getPath(); 
        } 
        Thread th = new Thread(new Runnable(){ 
         public void run() { 
          try 
          { 
           final File file = new File(DropboxUploadPathFrom); 
           InputStream inputStream = getContentResolver().openInputStream(uri); 

           dropboxAPI.putFile("/" + DropboxUploadName + file.getName().substring(file.getName().lastIndexOf("."), 
             file.getName().length()), inputStream, file.length(), null, new ProgressListener(){ 
            @Override 
            public long progressInterval() {return 100;} 
            @Override 
            public void onProgress(long arg0, long arg1){} 
           }); 
           getMain().runOnUiThread(new Runnable() 
           { 
            @Override 
            public void run() 
            { 
             Toast.makeText(getApplicationContext(), "File successfully uploaded.", Toast.LENGTH_SHORT).show(); 
            } 
           }); 
          } catch (Exception e) {e.printStackTrace();} 
         } 
        }); 
        th.start(); 
       } 
      } 
     }); 
    } 

    /* 
    protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
     super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 
     switch(requestCode) { 
      case 0: 
       if(resultCode == RESULT_OK){ 
        Uri selectedImage = imageReturnedIntent.getData(); 
        imageview.setImageURI(selectedImage); 
       } 

       break; 
      case 1: 
       if(resultCode == RESULT_OK){ 
        Uri selectedImage = imageReturnedIntent.getData(); 
        imageview.setImageURI(selectedImage); 
       } 
       break; 
     } 
    } 
    */ 

    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(); 
      } 
     } 
    } 

    public WC_Activity getMain() 
    { 
     return this; 
    } 
} 

回答

1

如果我正确理解你的问题,你使用v1 Android SDK(https://www.dropbox.com/developers-v1/core/sdks/android),并且你想共享一个文件。

如果是这样,您只需拨打dropboxAPI.share并将路径传递到Dropbox中的文件。您将收到一个DropboxLink对象,其中url字段。