Merge branch 'master' of https://github.com/PhilippC/keepass2android
This commit is contained in:
@@ -2,7 +2,7 @@ Keepass2Android's apk is pretty big, e.g. when comparing to Keepassdroid. The ma
|
|||||||
|
|
||||||
Here's a list of what is contained in the Keepass2Android 0.9.1 application package:
|
Here's a list of what is contained in the Keepass2Android 0.9.1 application package:
|
||||||
|
|
||||||
{{
|
```
|
||||||
Mono for Android
|
Mono for Android
|
||||||
.net dlls 5.0 MB
|
.net dlls 5.0 MB
|
||||||
Runtime 2.5 MB
|
Runtime 2.5 MB
|
||||||
@@ -22,4 +22,4 @@ Java/Mono bindings 0.5 MB
|
|||||||
rest 0.3 MB
|
rest 0.3 MB
|
||||||
|
|
||||||
TOTAL 13 MB
|
TOTAL 13 MB
|
||||||
}}
|
```
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
<h1 align="center"><img src="/src/keepass2android/Resources/mipmap-xxxhdpi/ic_launcher_online.png" align="center" width="100" alt="Keepass2Android Logo">Keepass2Android</h1>
|
||||||
|
|
||||||
|
|
||||||
# What is Keepass2Android?
|
# What is Keepass2Android?
|
||||||
Keepass2Android is a password manager app. It allows to store and retrieve passwords and other sensitive information in a file called "database". This database is secured with a so-called master password. The master password typically is a strong password and can be complemented with a second factor for additional security.
|
Keepass2Android is a password manager app. It allows to store and retrieve passwords and other sensitive information in a file called "database". This database is secured with a so-called master password. The master password typically is a strong password and can be complemented with a second factor for additional security.
|
||||||
The password database file can be synchronized across different devices. This works best using one of the built-in cloud storage options, but can also be performed with third-party apps. Keepass2Android is compatible with Keepass 1 and Keepass 2 on Windows and KeepassX on Linux.
|
The password database file can be synchronized across different devices. This works best using one of the built-in cloud storage options, but can also be performed with third-party apps. Keepass2Android is compatible with Keepass 1 and Keepass 2 on Windows and KeepassX on Linux.
|
||||||
|
|||||||
@@ -178,7 +178,9 @@ namespace keepass2android.Io
|
|||||||
if (!IsCached(ioc))
|
if (!IsCached(ioc))
|
||||||
throw;
|
throw;
|
||||||
|
|
||||||
Kp2aLog.Log("couldn't open from remote " + ioc.Path);
|
#if DEBUG
|
||||||
|
Kp2aLog.Log("couldn't open from remote " + ioc.Path);
|
||||||
|
#endif
|
||||||
Kp2aLog.Log(ex.ToString());
|
Kp2aLog.Log(ex.ToString());
|
||||||
|
|
||||||
_cacheSupervisor.CouldntOpenFromRemote(ioc, ex);
|
_cacheSupervisor.CouldntOpenFromRemote(ioc, ex);
|
||||||
|
|||||||
@@ -233,7 +233,6 @@ namespace keepass2android.Io
|
|||||||
|
|
||||||
public FileDescription GetFileDescription(IOConnectionInfo ioc)
|
public FileDescription GetFileDescription(IOConnectionInfo ioc)
|
||||||
{
|
{
|
||||||
Kp2aLog.Log("GetFileDescription "+ioc.Path);
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return ConvertToFileDescription(Jfs.GetFileEntry(IocToPath(ioc)));
|
return ConvertToFileDescription(Jfs.GetFileEntry(IocToPath(ioc)));
|
||||||
@@ -302,7 +301,9 @@ namespace keepass2android.Io
|
|||||||
|
|
||||||
public void OnResume(IFileStorageSetupActivity activity)
|
public void OnResume(IFileStorageSetupActivity activity)
|
||||||
{
|
{
|
||||||
|
#if DEBUG
|
||||||
Kp2aLog.Log("JFS/OnResume Ioc.Path=" +activity.Ioc.Path+". Path="+((IJavaFileStorageFileStorageSetupActivity)activity).Path);
|
Kp2aLog.Log("JFS/OnResume Ioc.Path=" +activity.Ioc.Path+". Path="+((IJavaFileStorageFileStorageSetupActivity)activity).Path);
|
||||||
|
#endif
|
||||||
_jfs.OnResume(((IJavaFileStorageFileStorageSetupActivity) activity));
|
_jfs.OnResume(((IJavaFileStorageFileStorageSetupActivity) activity));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -366,4 +367,4 @@ namespace keepass2android.Io
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -14,6 +14,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import com.pcloud.sdk.ApiClient;
|
import com.pcloud.sdk.ApiClient;
|
||||||
@@ -52,7 +53,7 @@ public class PCloudFileStorage extends JavaFileStorageBase
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean requiresSetup(String path) {
|
public boolean requiresSetup(String path) {
|
||||||
return true;
|
return !this.isConnected();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -135,8 +136,10 @@ public class PCloudFileStorage extends JavaFileStorageBase
|
|||||||
String filePath = path.substring(0, path.lastIndexOf("/") + 1);
|
String filePath = path.substring(0, path.lastIndexOf("/") + 1);
|
||||||
RemoteFolder remoteFolder = this.getRemoteFolderByPath(filePath);
|
RemoteFolder remoteFolder = this.getRemoteFolderByPath(filePath);
|
||||||
|
|
||||||
|
String tempName = "." + UUID.randomUUID().toString();
|
||||||
try {
|
try {
|
||||||
this.apiClient.createFile(remoteFolder, filename, dataSource).execute();
|
RemoteFile remoteFile = this.apiClient.createFile(remoteFolder, tempName, dataSource).execute();
|
||||||
|
this.apiClient.rename(remoteFile, filename).execute();
|
||||||
} catch (ApiError e) {
|
} catch (ApiError e) {
|
||||||
throw convertApiError(e);
|
throw convertApiError(e);
|
||||||
}
|
}
|
||||||
@@ -372,7 +375,7 @@ public class PCloudFileStorage extends JavaFileStorageBase
|
|||||||
|
|
||||||
private Exception convertApiError(ApiError e) {
|
private Exception convertApiError(ApiError e) {
|
||||||
String strErrorCode = String.valueOf(e.errorCode());
|
String strErrorCode = String.valueOf(e.errorCode());
|
||||||
if (strErrorCode.startsWith("1") || "2000".equals(strErrorCode)) {
|
if (strErrorCode.startsWith("1") || "2000".equals(strErrorCode) || "2095".equals(strErrorCode)) {
|
||||||
this.clearAuthToken();
|
this.clearAuthToken();
|
||||||
return new UserInteractionRequiredException("Unlinked from PCloud! User must re-link.", e);
|
return new UserInteractionRequiredException("Unlinked from PCloud! User must re-link.", e);
|
||||||
} else if (strErrorCode.startsWith("2")) {
|
} else if (strErrorCode.startsWith("2")) {
|
||||||
|
|||||||
@@ -515,8 +515,8 @@
|
|||||||
<string name="enter_owncloud_login_title">Enter OwnCloud login data:</string>
|
<string name="enter_owncloud_login_title">Enter OwnCloud login data:</string>
|
||||||
<string name="hint_owncloud_url">OwnCloud URL (ex: owncloud.me.com)</string>
|
<string name="hint_owncloud_url">OwnCloud URL (ex: owncloud.me.com)</string>
|
||||||
|
|
||||||
<string name="enter_nextcloud_login_title">Enter NextCloud login data:</string>
|
<string name="enter_nextcloud_login_title">Enter Nextcloud login data:</string>
|
||||||
<string name="hint_nextcloud_url">NextCloud URL (ex: nextcloud.me.com)</string>
|
<string name="hint_nextcloud_url">Nextcloud URL (ex: nextcloud.me.com)</string>
|
||||||
|
|
||||||
<string name="hint_sftp_host">host (ex: 192.168.0.1)</string>
|
<string name="hint_sftp_host">host (ex: 192.168.0.1)</string>
|
||||||
<string name="hint_sftp_port">port</string>
|
<string name="hint_sftp_port">port</string>
|
||||||
@@ -538,7 +538,7 @@
|
|||||||
<string name="filestoragename_http">HTTP (WebDav)</string>
|
<string name="filestoragename_http">HTTP (WebDav)</string>
|
||||||
<string name="filestoragename_https">HTTPS (WebDav)</string>
|
<string name="filestoragename_https">HTTPS (WebDav)</string>
|
||||||
<string name="filestoragename_owncloud">OwnCloud</string>
|
<string name="filestoragename_owncloud">OwnCloud</string>
|
||||||
<string name="filestoragename_nextcloud">NextCloud</string>
|
<string name="filestoragename_nextcloud">Nextcloud</string>
|
||||||
<string name="filestoragename_dropbox">Dropbox</string>
|
<string name="filestoragename_dropbox">Dropbox</string>
|
||||||
<string name="filestoragename_dropboxKP2A">Dropbox (KP2A folder)</string>
|
<string name="filestoragename_dropboxKP2A">Dropbox (KP2A folder)</string>
|
||||||
<string name="filestoragehelp_dropboxKP2A">If you do not want to give KP2A access to your full Dropbox, you may select this option. It will request only access to the folder Apps/Keepass2Android. This is especially suited when creating a new database. If you already have a database, click this option to create the folder, then place your file inside the folder (from your PC) and then select this option again for opening the file.</string>
|
<string name="filestoragehelp_dropboxKP2A">If you do not want to give KP2A access to your full Dropbox, you may select this option. It will request only access to the folder Apps/Keepass2Android. This is especially suited when creating a new database. If you already have a database, click this option to create the folder, then place your file inside the folder (from your PC) and then select this option again for opening the file.</string>
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ namespace keepass2android.fileselect
|
|||||||
Ioc = new IOConnectionInfo();
|
Ioc = new IOConnectionInfo();
|
||||||
Util.SetIoConnectionFromIntent(Ioc, Intent);
|
Util.SetIoConnectionFromIntent(Ioc, Intent);
|
||||||
|
|
||||||
Kp2aLog.Log("FSSA.OnCreate with " + Ioc.Path);
|
Kp2aLog.Log("FSSA.OnCreate");
|
||||||
|
|
||||||
ProcessName = Intent.GetStringExtra(FileStorageSetupDefs.ExtraProcessName);
|
ProcessName = Intent.GetStringExtra(FileStorageSetupDefs.ExtraProcessName);
|
||||||
IsForSave = Intent.GetBooleanExtra(FileStorageSetupDefs.ExtraIsForSave, false);
|
IsForSave = Intent.GetBooleanExtra(FileStorageSetupDefs.ExtraIsForSave, false);
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ namespace keepass2android
|
|||||||
|
|
||||||
public void StartSelectFileProcess(IOConnectionInfo ioc, bool isForSave, int requestCode)
|
public void StartSelectFileProcess(IOConnectionInfo ioc, bool isForSave, int requestCode)
|
||||||
{
|
{
|
||||||
Kp2aLog.Log("FSSIA: StartSelectFileProcess "+ioc.Path);
|
Kp2aLog.Log("FSSIA: StartSelectFileProcess ");
|
||||||
Intent fileStorageSetupIntent = new Intent(_activity, typeof(FileStorageSetupActivity));
|
Intent fileStorageSetupIntent = new Intent(_activity, typeof(FileStorageSetupActivity));
|
||||||
fileStorageSetupIntent.PutExtra(FileStorageSetupDefs.ExtraProcessName, FileStorageSetupDefs.ProcessNameSelectfile);
|
fileStorageSetupIntent.PutExtra(FileStorageSetupDefs.ExtraProcessName, FileStorageSetupDefs.ProcessNameSelectfile);
|
||||||
fileStorageSetupIntent.PutExtra(FileStorageSetupDefs.ExtraIsForSave, isForSave);
|
fileStorageSetupIntent.PutExtra(FileStorageSetupDefs.ExtraIsForSave, isForSave);
|
||||||
|
|||||||
Reference in New Issue
Block a user