ฉันต้องการส่งไฟล์ข้อความไปที่ดรอปบ็อกซ์แต่มันแสดง DropboxUnlinkedException
สารละลาย ::
ขั้นแรก ให้โปรแกรมของคุณได้รับการรับรองความถูกต้องโดยสมบูรณ์ หลังจากเมธอด mDBApi.getSession.startAuthentication()
เมธอด onResume จะถูกเรียกโดยอัตโนมัติ ปล่อยให้การตรวจสอบสิทธิ์แบบเต็มเสร็จสมบูรณ์ จากนั้นทำสิ่งที่คุณต้องการจะทำ
กิจกรรมหลัก
public class MainActivity extends Activity implements LocationListener{
TextView date;
TextView lati;
TextView longi;
Button b1;
private DropboxAPI<AndroidAuthSession> mDBApi;
private LocationManager locationManager;
private String provider;
final static public String ACCOUNT_PREFS_NAME = "GPS_File";
final static public String APP_KEY = "5qiq4z06ikagxfb";
final static public String APP_SECRET = "f6mbf1hnn0re2ni";
final static public AccessType ACCESS_TYPE = AccessType.APP_FOLDER;
boolean mIsLoggedIn = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET);
AndroidAuthSession session = new AndroidAuthSession(appKeys, ACCESS_TYPE);
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
//this is start authentication
mDBApi.getSession().startAuthentication(MainActivity.this);
//after this it will call onResume
date = (TextView)findViewById(R.id.textView2);
lati = (TextView)findViewById(R.id.textView4);
longi = (TextView)findViewById(R.id.textView6);
b1 = (Button)findViewById(R.id.button1);
createFile("abcd", "12345", "54321");
toDropbox();
setLoggedIn(mDBApi.getSession().isLinked());
}
void createFile(String str1,String str2,String str3)
{
String data = str1+"\t"+str2+"\t"+str3;
try{
File myFile = new File("/sdcard/DropboxFile1.txt");
myFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
myOutWriter.append(data);
myOutWriter.close();
fOut.close();
}
catch(Exception e)
{e.printStackTrace();}
}
void toDropbox()
{
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String filePath = Environment.getExternalStorageDirectory().getAbsolutePath().toString() + "/DropboxFile1.txt";
File file = new File(filePath);
mDBApi.getSession().startAuthentication(MainActivity.this);
try {
mDBApi.putFileOverwrite(filePath, new FileInputStream(file), file.length(), null);
} catch (DropboxException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
});
}
private void clearKeys() {
SharedPreferences prefs = getSharedPreferences(ACCOUNT_PREFS_NAME, 0);
Editor edit = prefs.edit();
edit.clear();
edit.commit();
}
//This get call after StartAuthentication..
protected void onResume() {
super.onResume();
AndroidAuthSession session = mDBApi.getSession();
// The next part must be inserted in the onResume() method of the
// activity from which session.startAuthentication() was called, so
// that Dropbox authentication completes properly.
if (session.authenticationSuccessful()) {
try {
// Mandatory call to complete the auth
session.finishAuthentication();
// Store it locally in our app for later use
TokenPair tokens = session.getAccessTokenPair();
storeKeys(tokens.key, tokens.secret);
setLoggedIn(true);
} catch (IllegalStateException e) {
//Keep this toast.. It will show you the completed authentication..
Toast.makeText(getBaseContext(), e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
Log.i("Dropbox", "Error authenticating", e);
}
}
}
private void storeKeys(String key, String secret) {
// Save the access key for later
SharedPreferences prefs = getSharedPreferences(ACCOUNT_PREFS_NAME, 0);
Editor edit = prefs.edit();
edit.putString(APP_KEY, key);
edit.putString(APP_SECRET, secret);
edit.commit();
}
public void setLoggedIn(boolean loggedIn) {
mIsLoggedIn = loggedIn;
}
public boolean isLoggedIn() {
return mIsLoggedIn;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
}//MainActivity Ends..`
` หลังจากการรับรองความถูกต้องเสร็จสิ้นแล้ว ให้ทำอย่างอื่นของคุณ
newFile
ดูเหมือนว่าจะมีวงเล็บปีกกาพิเศษอยู่ ดังนั้นโค้ดนี้จึงอาจไม่สามารถคอมไพล์ได้ แล้วทำไมคุณไม่แจ้งสแต็กเทรซของข้อยกเว้นทั้งหมดให้เราทราบล่ะ คุณยังไม่ได้แจ้งให้เราทราบด้วยซ้ำว่าโค้ดของคุณบรรทัดใดที่ทำให้เกิดข้อยกเว้น คุณยังไม่ได้บอกฉันว่าคุณทำอะไรในแอปเพื่อทำให้เกิดข้อยกเว้น (ฉันเดาว่ามีการคลิกปุ่มอย่างน้อยหนึ่งครั้งที่เกี่ยวข้อง และ อาจจะ คุณเข้าสู่ระบบก่อน...) - person user94559   schedule 26.12.2013