add default android file picker for selecting ssh-key
This commit is contained in:
parent
2c076fb0eb
commit
2788786f65
2 changed files with 28 additions and 17 deletions
|
@ -87,7 +87,7 @@ public class UserPreference extends AppCompatActivity {
|
||||||
findPreference("ssh_key").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
findPreference("ssh_key").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceClick(Preference preference) {
|
public boolean onPreferenceClick(Preference preference) {
|
||||||
callingActivity.getSshKeyWithPermissions();
|
callingActivity.getSshKeyWithPermissions(sharedPreferences.getBoolean("use_android_file_picker", false));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -264,12 +264,13 @@ public class UserPreference extends AppCompatActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext());
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
if (getIntent() != null) {
|
if (getIntent() != null) {
|
||||||
if (getIntent().getStringExtra("operation") != null) {
|
if (getIntent().getStringExtra("operation") != null) {
|
||||||
switch (getIntent().getStringExtra("operation")) {
|
switch (getIntent().getStringExtra("operation")) {
|
||||||
case "get_ssh_key":
|
case "get_ssh_key":
|
||||||
getSshKeyWithPermissions();
|
getSshKeyWithPermissions(sharedPreferences.getBoolean("use_android_file_picker", false));
|
||||||
break;
|
break;
|
||||||
case "make_ssh_key":
|
case "make_ssh_key":
|
||||||
makeSshKey(false);
|
makeSshKey(false);
|
||||||
|
@ -334,7 +335,7 @@ public class UserPreference extends AppCompatActivity {
|
||||||
/**
|
/**
|
||||||
* Opens a file explorer to import the private key
|
* Opens a file explorer to import the private key
|
||||||
*/
|
*/
|
||||||
public void getSshKeyWithPermissions() {
|
public void getSshKeyWithPermissions(boolean useDefaultPicker) {
|
||||||
final Activity activity = this;
|
final Activity activity = this;
|
||||||
if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
||||||
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.READ_EXTERNAL_STORAGE)) {
|
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.READ_EXTERNAL_STORAGE)) {
|
||||||
|
@ -357,27 +358,31 @@ public class UserPreference extends AppCompatActivity {
|
||||||
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_EXTERNAL_STORAGE);
|
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_EXTERNAL_STORAGE);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
getSshKey();
|
getSshKey(useDefaultPicker);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens a file explorer to import the private key
|
* Opens a file explorer to import the private key
|
||||||
*/
|
*/
|
||||||
public void getSshKey() {
|
public void getSshKey(boolean useDefaultPicker) {
|
||||||
// This always works
|
if (useDefaultPicker) {
|
||||||
Intent i = new Intent(getApplicationContext(), FilePickerActivity.class);
|
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
|
||||||
// This works if you defined the intent filter
|
intent.setType("*/*");
|
||||||
// Intent i = new Intent(Intent.ACTION_GET_CONTENT);
|
startActivityForResult(intent, IMPORT_SSH_KEY);
|
||||||
|
} else {
|
||||||
|
// This always works
|
||||||
|
Intent i = new Intent(getApplicationContext(), FilePickerActivity.class);
|
||||||
|
// This works if you defined the intent filter
|
||||||
|
// Intent i = new Intent(Intent.ACTION_GET_CONTENT);
|
||||||
|
|
||||||
// Set these depending on your use case. These are the defaults.
|
// Set these depending on your use case. These are the defaults.
|
||||||
i.putExtra(FilePickerActivity.EXTRA_ALLOW_MULTIPLE, false);
|
i.putExtra(FilePickerActivity.EXTRA_ALLOW_MULTIPLE, false);
|
||||||
i.putExtra(FilePickerActivity.EXTRA_ALLOW_CREATE_DIR, false);
|
i.putExtra(FilePickerActivity.EXTRA_ALLOW_CREATE_DIR, false);
|
||||||
i.putExtra(FilePickerActivity.EXTRA_MODE, FilePickerActivity.MODE_FILE);
|
i.putExtra(FilePickerActivity.EXTRA_MODE, FilePickerActivity.MODE_FILE);
|
||||||
|
|
||||||
i.putExtra(FilePickerActivity.EXTRA_START_PATH, Environment.getExternalStorageDirectory().getPath());
|
i.putExtra(FilePickerActivity.EXTRA_START_PATH, Environment.getExternalStorageDirectory().getPath());
|
||||||
|
}
|
||||||
startActivityForResult(i, IMPORT_SSH_KEY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void exportPasswordsWithPermissions() {
|
public void exportPasswordsWithPermissions() {
|
||||||
|
@ -543,11 +548,12 @@ public class UserPreference extends AppCompatActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
||||||
|
final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext());
|
||||||
switch (requestCode) {
|
switch (requestCode) {
|
||||||
case REQUEST_EXTERNAL_STORAGE: {
|
case REQUEST_EXTERNAL_STORAGE: {
|
||||||
// If request is cancelled, the result arrays are empty.
|
// If request is cancelled, the result arrays are empty.
|
||||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
getSshKey();
|
getSshKey(sharedPreferences.getBoolean("use_android_file_picker", false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,6 +103,11 @@
|
||||||
android:key="clear_clipboard_20x"
|
android:key="clear_clipboard_20x"
|
||||||
android:summary="@string/pref_clear_clipboard_hint"
|
android:summary="@string/pref_clear_clipboard_hint"
|
||||||
android:title="@string/pref_clear_clipboard_title" />
|
android:title="@string/pref_clear_clipboard_title" />
|
||||||
|
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:defaultValue="false"
|
||||||
|
android:key="use_android_file_picker"
|
||||||
|
android:title="Use default file picker" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
|
|
Loading…
Reference in a new issue