Corrected an issue on kitkat when opening ssh-key

This happens when you select a file using kitkat's file manager
This commit is contained in:
knuthy 2014-09-20 20:56:14 +02:00
parent 5c53fcb4a0
commit 3764db17c9
8 changed files with 20 additions and 17 deletions

Binary file not shown.

Binary file not shown.

View file

@ -8,8 +8,8 @@ android {
applicationId "com.zeapo.pwdstore" applicationId "com.zeapo.pwdstore"
minSdkVersion 15 minSdkVersion 15
targetSdkVersion 19 targetSdkVersion 19
versionCode 9 versionCode 11
versionName "1.1-b4" versionName "1.1-b5"
} }
buildTypes { buildTypes {
release { release {

View file

@ -51,6 +51,7 @@ public class GitAsyncTask extends AsyncTask<GitCommand, Integer, Integer> {
return -2; return -2;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return -98;
} }
totalSize++; totalSize++;
} }

View file

@ -11,13 +11,11 @@ import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.text.InputType; import android.text.InputType;
import android.util.Log;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.Spinner; import android.widget.Spinner;
@ -27,7 +25,6 @@ import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException; import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session; import com.jcraft.jsch.Session;
import com.jcraft.jsch.UserInfo; import com.jcraft.jsch.UserInfo;
import com.zeapo.pwdstore.crypto.PgpHandler;
import com.zeapo.pwdstore.utils.PasswordRepository; import com.zeapo.pwdstore.utils.PasswordRepository;
import org.eclipse.jgit.api.CloneCommand; import org.eclipse.jgit.api.CloneCommand;
@ -39,7 +36,6 @@ import org.eclipse.jgit.api.errors.InvalidRemoteException;
import org.eclipse.jgit.api.errors.JGitInternalException; import org.eclipse.jgit.api.errors.JGitInternalException;
import org.eclipse.jgit.api.errors.TransportException; import org.eclipse.jgit.api.errors.TransportException;
import org.eclipse.jgit.errors.UnsupportedCredentialItem; import org.eclipse.jgit.errors.UnsupportedCredentialItem;
import org.eclipse.jgit.merge.MergeStrategy;
import org.eclipse.jgit.transport.CredentialItem; import org.eclipse.jgit.transport.CredentialItem;
import org.eclipse.jgit.transport.CredentialsProvider; import org.eclipse.jgit.transport.CredentialsProvider;
import org.eclipse.jgit.transport.CredentialsProviderUserInfo; import org.eclipse.jgit.transport.CredentialsProviderUserInfo;
@ -75,7 +71,7 @@ public class GitHandler extends Activity {
public static final int REQUEST_CLONE = 103; public static final int REQUEST_CLONE = 103;
public static final int REQUEST_INIT = 104; public static final int REQUEST_INIT = 104;
private static final int GET_SSH_KEY = 201; private static final int GET_SSH_KEY_FROM_CLONE = 201;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -199,6 +195,7 @@ public class GitHandler extends Activity {
e.printStackTrace(); e.printStackTrace();
} }
return true; return true;
} }
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
@ -460,9 +457,9 @@ public class GitHandler extends Activity {
public void pullOperation(UsernamePasswordCredentialsProvider provider) { public void pullOperation(UsernamePasswordCredentialsProvider provider) {
if (settings.getString("git_remote_username", "user").isEmpty() || if (settings.getString("git_remote_username", "").isEmpty() ||
settings.getString("git_remote_server", "server.com").isEmpty() || settings.getString("git_remote_server", "").isEmpty() ||
settings.getString("git_remote_location", "path/to/repository").isEmpty() ) settings.getString("git_remote_location", "").isEmpty() )
new AlertDialog.Builder(this) new AlertDialog.Builder(this)
.setMessage("You have to set the information about the server before synchronizing with the server") .setMessage("You have to set the information about the server before synchronizing with the server")
.setPositiveButton("On my way!", new DialogInterface.OnClickListener() { .setPositiveButton("On my way!", new DialogInterface.OnClickListener() {
@ -584,7 +581,7 @@ public class GitHandler extends Activity {
public void onClick(DialogInterface dialog, int id) { public void onClick(DialogInterface dialog, int id) {
try { try {
Intent intent = new Intent(getApplicationContext(), UserPreference.class); Intent intent = new Intent(getApplicationContext(), UserPreference.class);
startActivityForResult(intent, GET_SSH_KEY); startActivityForResult(intent, GET_SSH_KEY_FROM_CLONE);
} catch (Exception e) { } catch (Exception e) {
System.out.println("Exception caught :("); System.out.println("Exception caught :(");
e.printStackTrace(); e.printStackTrace();
@ -693,8 +690,8 @@ public class GitHandler extends Activity {
case REQUEST_PUSH: case REQUEST_PUSH:
authenticateAndRun("pushOperation"); authenticateAndRun("pushOperation");
break; break;
case GET_SSH_KEY: case GET_SSH_KEY_FROM_CLONE:
authenticateAndRun("pullOperation"); authenticateAndRun("cloneOperation");
} }
} }

View file

@ -137,7 +137,7 @@ public class PasswordStore extends Activity implements ToCloneOrNot.OnFragmentI
public void getClone(View view){ public void getClone(View view){
Intent intent = new Intent(this, GitHandler.class); Intent intent = new Intent(this, GitHandler.class);
intent.putExtra("Operation", GitHandler.REQUEST_CLONE); intent.putExtra("Operation", GitHandler.REQUEST_CLONE);
startActivity(intent); startActivityForResult(intent, GitHandler.REQUEST_CLONE);
} }
private void createRepository() { private void createRepository() {
@ -358,7 +358,10 @@ public class PasswordStore extends Activity implements ToCloneOrNot.OnFragmentI
refreshListAdapter(); refreshListAdapter();
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {
refreshListAdapter(); if (requestCode == GitHandler.REQUEST_CLONE)
checkLocalRepository();
else
refreshListAdapter();
switch (requestCode) { switch (requestCode) {
case PgpHandler.REQUEST_CODE_ENCRYPT : case PgpHandler.REQUEST_CODE_ENCRYPT :

View file

@ -70,8 +70,10 @@ public class UserPreference extends PreferenceActivity implements Preference.OnP
if (requestCode == 1) { if (requestCode == 1) {
// Uri sshFile = data.getData(); // Uri sshFile = data.getData();
try { try {
byte[] privateKey = IOUtils.toByteArray(this.getContentResolver().openInputStream(data.getData())); InputStream sshKey = this.getContentResolver().openInputStream(data.getData());
byte[] privateKey = IOUtils.toByteArray(sshKey);
FileUtils.writeByteArrayToFile(new File(getFilesDir() + "/.ssh_key"), privateKey); FileUtils.writeByteArrayToFile(new File(getFilesDir() + "/.ssh_key"), privateKey);
sshKey.close();
Log.i("PREF", "Got key"); Log.i("PREF", "Got key");
setResult(RESULT_OK); setResult(RESULT_OK);

@ -1 +1 @@
Subproject commit e515a49027fc5de36b8977cf8b096afc9838a9be Subproject commit 6aaf8fde5e2541a614b1b0f8633372588eaee710