mirror of
https://github.com/nextcloud/android.git
synced 2024-11-25 14:45:47 +03:00
Merge branch 'master' into signApk
This commit is contained in:
commit
74786b8429
67 changed files with 255 additions and 188 deletions
|
@ -107,8 +107,8 @@ android {
|
|||
versionDev {
|
||||
applicationId "com.nextcloud.android.beta"
|
||||
dimension "default"
|
||||
versionCode 20171211
|
||||
versionName "20171211"
|
||||
versionCode 20171212
|
||||
versionName "20171212"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
DO NOT TOUCH; GENERATED BY DRONE
|
||||
<span class="mdl-layout-title">Lint Report: 335 warnings</span>
|
||||
<span class="mdl-layout-title">Lint Report: 334 warnings</span>
|
||||
|
|
|
@ -17,15 +17,20 @@ returnValue=$?
|
|||
|
||||
echo "Branch: $3"
|
||||
|
||||
if [ $3 = "master" -a $returnValue -eq 0 ]; then
|
||||
if [ $3 = "master" -a $returnValue -ne 1 ]; then
|
||||
echo "New master at: https://nextcloud.kaminsky.me/index.php/s/tXwtChzyqMj6I8v"
|
||||
curl -u $4:$5 -X PUT https://nextcloud.kaminsky.me/remote.php/webdav/droneLogs/master.html --upload-file build/reports/lint/lint.html
|
||||
exit 0
|
||||
elif [ $returnValue -eq 1 ]; then
|
||||
if [ -e $6 ] ; then
|
||||
else
|
||||
if [ -e $6 ]; then
|
||||
6="master-"$(date +%F)
|
||||
fi
|
||||
echo "New results at https://nextcloud.kaminsky.me/index.php/s/tXwtChzyqMj6I8v ->" $6.html
|
||||
curl -u $4:$5 -X PUT https://nextcloud.kaminsky.me/remote.php/webdav/droneLogs/$6.html --upload-file build/reports/lint/lint.html
|
||||
exit 1
|
||||
|
||||
if [ $returnValue -eq 2 ]; then
|
||||
exit 0
|
||||
else
|
||||
exit $returnValue
|
||||
fi
|
||||
fi
|
||||
|
|
|
@ -461,7 +461,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
|
|||
}
|
||||
}).show();
|
||||
}
|
||||
}, 1000);
|
||||
}, 60000);
|
||||
}
|
||||
|
||||
private void parseAndLoginFromWebView(String dataString) {
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
*/
|
||||
package com.owncloud.android.datamodel;
|
||||
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
/*
|
||||
Model for filesystem data from the database
|
||||
*/
|
||||
|
@ -32,12 +34,13 @@ public class FileSystemDataSet {
|
|||
private boolean isSentForUpload;
|
||||
private long foundAt;
|
||||
private long syncedFolderId;
|
||||
@Nullable private String crc32;
|
||||
|
||||
public FileSystemDataSet() {
|
||||
}
|
||||
|
||||
public FileSystemDataSet(int id, String localPath, long modifiedAt, boolean isFolder,
|
||||
boolean isSentForUpload, long foundAt, long syncedFolderId) {
|
||||
boolean isSentForUpload, long foundAt, long syncedFolderId, @Nullable String crc32) {
|
||||
this.id = id;
|
||||
this.localPath = localPath;
|
||||
this.modifiedAt = modifiedAt;
|
||||
|
@ -45,6 +48,15 @@ public class FileSystemDataSet {
|
|||
this.isSentForUpload = isSentForUpload;
|
||||
this.foundAt = foundAt;
|
||||
this.syncedFolderId = syncedFolderId;
|
||||
this.crc32 = crc32;
|
||||
}
|
||||
|
||||
public String getCrc32() {
|
||||
return crc32;
|
||||
}
|
||||
|
||||
public void setCrc32(String crc32) {
|
||||
this.crc32 = crc32;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
|
|
|
@ -27,8 +27,14 @@ import android.net.Uri;
|
|||
import com.owncloud.android.db.ProviderMeta;
|
||||
import com.owncloud.android.lib.common.utils.Log_OC;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.zip.CRC32;
|
||||
|
||||
/**
|
||||
* Provider for stored filesystem data.
|
||||
|
@ -119,6 +125,11 @@ public class FilesystemDataProvider {
|
|||
cv.put(ProviderMeta.ProviderTableMeta.FILESYSTEM_FILE_SENT_FOR_UPLOAD, false);
|
||||
cv.put(ProviderMeta.ProviderTableMeta.FILESYSTEM_SYNCED_FOLDER_ID, syncedFolder.getId());
|
||||
|
||||
long newCrc32 = getFileChecksum(localPath);
|
||||
if (newCrc32 != -1) {
|
||||
cv.put(ProviderMeta.ProviderTableMeta.FILESYSTEM_CRC32, Long.toString(newCrc32));
|
||||
}
|
||||
|
||||
Uri result = contentResolver.insert(ProviderMeta.ProviderTableMeta.CONTENT_URI_FILESYSTEM, cv);
|
||||
|
||||
if (result == null) {
|
||||
|
@ -127,7 +138,11 @@ public class FilesystemDataProvider {
|
|||
} else {
|
||||
|
||||
if (data.getModifiedAt() != modifiedAt) {
|
||||
cv.put(ProviderMeta.ProviderTableMeta.FILESYSTEM_FILE_SENT_FOR_UPLOAD, 0);
|
||||
long newCrc32 = getFileChecksum(localPath);
|
||||
if (data.getCrc32() == null || (newCrc32 != -1 && !data.getCrc32().equals(Long.toString(newCrc32)))) {
|
||||
cv.put(ProviderMeta.ProviderTableMeta.FILESYSTEM_CRC32, Long.toString(newCrc32));
|
||||
cv.put(ProviderMeta.ProviderTableMeta.FILESYSTEM_FILE_SENT_FOR_UPLOAD, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -177,11 +192,13 @@ public class FilesystemDataProvider {
|
|||
isSentForUpload = true;
|
||||
}
|
||||
|
||||
String crc32 = cursor.getString(cursor.getColumnIndex(ProviderMeta.ProviderTableMeta.FILESYSTEM_CRC32));
|
||||
|
||||
if (id == -1) {
|
||||
Log_OC.e(TAG, "Arbitrary value could not be created from cursor");
|
||||
} else {
|
||||
dataSet = new FileSystemDataSet(id, localPath, modifiedAt, isFolder, isSentForUpload, foundAt,
|
||||
syncedFolder.getId());
|
||||
syncedFolder.getId(), crc32);
|
||||
}
|
||||
}
|
||||
cursor.close();
|
||||
|
@ -191,4 +208,24 @@ public class FilesystemDataProvider {
|
|||
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
private static long getFileChecksum(String filepath) {
|
||||
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
inputStream = new BufferedInputStream(new FileInputStream(filepath));
|
||||
CRC32 crc = new CRC32();
|
||||
int cnt;
|
||||
while ((cnt = inputStream.read()) != -1) {
|
||||
crc.update(cnt);
|
||||
}
|
||||
|
||||
return crc.getValue();
|
||||
|
||||
} catch (FileNotFoundException e) {
|
||||
return -1;
|
||||
} catch (IOException e) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,6 +68,7 @@ import java.io.File;
|
|||
import java.io.FileNotFoundException;
|
||||
import java.io.InputStream;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
|
@ -293,13 +294,11 @@ public class ThumbnailsCacheManager {
|
|||
if (serverOCVersion.supportsRemoteThumbnails()) {
|
||||
GetMethod getMethod = null;
|
||||
try {
|
||||
// resized image via gallery app
|
||||
String uri = mClient.getBaseUri() + "/index.php/apps/gallery/api/preview/" +
|
||||
Integer.parseInt(file.getRemoteId().substring(0, 8)) + "/" + pxW + "/" + pxH;
|
||||
Log_OC.d(TAG, "generate resizedImage: " + file.getFileName() + " URI: " + uri);
|
||||
String uri = mClient.getBaseUri() + "/index.php/core/preview.png?file="
|
||||
+ URLEncoder.encode(file.getRemotePath())
|
||||
+ "&x=" + pxW + "&y=" + pxH + "&a=1&mode=cover&forceIcon=0";
|
||||
getMethod = new GetMethod(uri);
|
||||
getMethod.setRequestHeader("Cookie",
|
||||
"nc_sameSiteCookielax=true;nc_sameSiteCookiestrict=true");
|
||||
|
||||
int status = mClient.executeMethod(getMethod);
|
||||
if (status == HttpStatus.SC_OK) {
|
||||
InputStream inputStream = getMethod.getResponseBodyAsStream();
|
||||
|
|
|
@ -32,7 +32,7 @@ import com.owncloud.android.MainApp;
|
|||
public class ProviderMeta {
|
||||
|
||||
public static final String DB_NAME = "filelist";
|
||||
public static final int DB_VERSION = 25;
|
||||
public static final int DB_VERSION = 26;
|
||||
|
||||
private ProviderMeta() {
|
||||
}
|
||||
|
@ -218,5 +218,6 @@ public class ProviderMeta {
|
|||
public static final String FILESYSTEM_FILE_FOUND_RECENTLY = "found_at";
|
||||
public static final String FILESYSTEM_FILE_SENT_FOR_UPLOAD = "upload_triggered";
|
||||
public static final String FILESYSTEM_SYNCED_FOLDER_ID = "syncedfolder_id";
|
||||
public static final String FILESYSTEM_CRC32 = "crc32";
|
||||
}
|
||||
}
|
|
@ -38,6 +38,9 @@ import android.database.sqlite.SQLiteDatabase;
|
|||
import android.database.sqlite.SQLiteOpenHelper;
|
||||
import android.database.sqlite.SQLiteQueryBuilder;
|
||||
import android.net.Uri;
|
||||
import android.os.Binder;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.owncloud.android.MainApp;
|
||||
|
@ -63,6 +66,7 @@ import java.util.Locale;
|
|||
public class FileContentProvider extends ContentProvider {
|
||||
|
||||
private DataBaseHelper mDbHelper;
|
||||
private Context mContext;
|
||||
|
||||
private static final int SINGLE_FILE = 1;
|
||||
private static final int DIRECTORY = 2;
|
||||
|
@ -89,9 +93,13 @@ public class FileContentProvider extends ContentProvider {
|
|||
private static final String UPGRADE_VERSION_MSG = "OUT of the ADD in onUpgrade; oldVersion == %d, newVersion == %d";
|
||||
|
||||
@Override
|
||||
public int delete(Uri uri, String where, String[] whereArgs) {
|
||||
//Log_OC.d(TAG, "Deleting " + uri + " at provider " + this);
|
||||
int count = 0;
|
||||
public int delete(@NonNull Uri uri, String where, String[] whereArgs) {
|
||||
int count;
|
||||
|
||||
if (isCallerNotAllowed()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
SQLiteDatabase db = mDbHelper.getWritableDatabase();
|
||||
db.beginTransaction();
|
||||
try {
|
||||
|
@ -100,11 +108,15 @@ public class FileContentProvider extends ContentProvider {
|
|||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
getContext().getContentResolver().notifyChange(uri, null);
|
||||
mContext.getContentResolver().notifyChange(uri, null);
|
||||
return count;
|
||||
}
|
||||
|
||||
private int delete(SQLiteDatabase db, Uri uri, String where, String[] whereArgs) {
|
||||
if (isCallerNotAllowed()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int count = 0;
|
||||
switch (mUriMatcher.match(uri)) {
|
||||
case SINGLE_FILE:
|
||||
|
@ -221,7 +233,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
}
|
||||
|
||||
@Override
|
||||
public String getType(Uri uri) {
|
||||
public String getType(@NonNull Uri uri) {
|
||||
switch (mUriMatcher.match(uri)) {
|
||||
case ROOT_DIRECTORY:
|
||||
return ProviderTableMeta.CONTENT_TYPE;
|
||||
|
@ -234,8 +246,12 @@ public class FileContentProvider extends ContentProvider {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Uri insert(Uri uri, ContentValues values) {
|
||||
Uri newUri = null;
|
||||
public Uri insert(@NonNull Uri uri, ContentValues values) {
|
||||
if (isCallerNotAllowed()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Uri newUri;
|
||||
SQLiteDatabase db = mDbHelper.getWritableDatabase();
|
||||
db.beginTransaction();
|
||||
try {
|
||||
|
@ -244,7 +260,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
getContext().getContentResolver().notifyChange(newUri, null);
|
||||
mContext.getContentResolver().notifyChange(newUri, null);
|
||||
return newUri;
|
||||
}
|
||||
|
||||
|
@ -286,7 +302,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
}
|
||||
|
||||
case SHARES:
|
||||
Uri insertedShareUri = null;
|
||||
Uri insertedShareUri;
|
||||
long rowId = db.insert(ProviderTableMeta.OCSHARES_TABLE_NAME, null, values);
|
||||
if (rowId > 0) {
|
||||
insertedShareUri =
|
||||
|
@ -299,7 +315,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
return insertedShareUri;
|
||||
|
||||
case CAPABILITIES:
|
||||
Uri insertedCapUri = null;
|
||||
Uri insertedCapUri;
|
||||
long id = db.insert(ProviderTableMeta.CAPABILITIES_TABLE_NAME, null, values);
|
||||
if (id > 0) {
|
||||
insertedCapUri =
|
||||
|
@ -311,7 +327,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
return insertedCapUri;
|
||||
|
||||
case UPLOADS:
|
||||
Uri insertedUploadUri = null;
|
||||
Uri insertedUploadUri;
|
||||
long uploadId = db.insert(ProviderTableMeta.UPLOADS_TABLE_NAME, null, values);
|
||||
if (uploadId > 0) {
|
||||
insertedUploadUri =
|
||||
|
@ -323,7 +339,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
return insertedUploadUri;
|
||||
|
||||
case SYNCED_FOLDERS:
|
||||
Uri insertedSyncedFolderUri = null;
|
||||
Uri insertedSyncedFolderUri;
|
||||
long syncedFolderId = db.insert(ProviderTableMeta.SYNCED_FOLDERS_TABLE_NAME, null, values);
|
||||
if (syncedFolderId > 0) {
|
||||
insertedSyncedFolderUri =
|
||||
|
@ -335,7 +351,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
return insertedSyncedFolderUri;
|
||||
|
||||
case EXTERNAL_LINKS:
|
||||
Uri insertedExternalLinkUri = null;
|
||||
Uri insertedExternalLinkUri;
|
||||
long externalLinkId = db.insert(ProviderTableMeta.EXTERNAL_LINKS_TABLE_NAME, null, values);
|
||||
if (externalLinkId > 0) {
|
||||
insertedExternalLinkUri =
|
||||
|
@ -347,7 +363,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
return insertedExternalLinkUri;
|
||||
|
||||
case ARBITRARY_DATA:
|
||||
Uri insertedArbitraryDataUri = null;
|
||||
Uri insertedArbitraryDataUri;
|
||||
long arbitraryDataId = db.insert(ProviderTableMeta.ARBITRARY_DATA_TABLE_NAME, null, values);
|
||||
if (arbitraryDataId > 0) {
|
||||
insertedArbitraryDataUri =
|
||||
|
@ -369,11 +385,11 @@ public class FileContentProvider extends ContentProvider {
|
|||
|
||||
return insertedVirtualUri;
|
||||
case FILESYSTEM:
|
||||
Uri insertedFilesystemUri = null;
|
||||
long filesystedId = db.insert(ProviderTableMeta.FILESYSTEM_TABLE_NAME, null, values);
|
||||
if (filesystedId > 0) {
|
||||
Uri insertedFilesystemUri;
|
||||
long filesystemId = db.insert(ProviderTableMeta.FILESYSTEM_TABLE_NAME, null, values);
|
||||
if (filesystemId > 0) {
|
||||
insertedFilesystemUri =
|
||||
ContentUris.withAppendedId(ProviderTableMeta.CONTENT_URI_FILESYSTEM, filesystedId);
|
||||
ContentUris.withAppendedId(ProviderTableMeta.CONTENT_URI_FILESYSTEM, filesystemId);
|
||||
} else {
|
||||
throw new SQLException("ERROR " + uri);
|
||||
}
|
||||
|
@ -412,8 +428,13 @@ public class FileContentProvider extends ContentProvider {
|
|||
@Override
|
||||
public boolean onCreate() {
|
||||
mDbHelper = new DataBaseHelper(getContext());
|
||||
mContext = getContext();
|
||||
|
||||
String authority = getContext().getResources().getString(R.string.authority);
|
||||
if (mContext == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
String authority = mContext.getResources().getString(R.string.authority);
|
||||
mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
|
||||
mUriMatcher.addURI(authority, null, ROOT_DIRECTORY);
|
||||
mUriMatcher.addURI(authority, "file/", SINGLE_FILE);
|
||||
|
@ -437,15 +458,24 @@ public class FileContentProvider extends ContentProvider {
|
|||
|
||||
|
||||
@Override
|
||||
public Cursor query(
|
||||
Uri uri,
|
||||
String[] projection,
|
||||
String selection,
|
||||
String[] selectionArgs,
|
||||
String sortOrder
|
||||
) {
|
||||
public Cursor query(@NonNull Uri uri, String[] projection, String selection, String[] selectionArgs,
|
||||
String sortOrder) {
|
||||
|
||||
Cursor result = null;
|
||||
// skip check for files as they need to be queried to get access via document provider
|
||||
switch (mUriMatcher.match(uri)) {
|
||||
case ROOT_DIRECTORY:
|
||||
case SINGLE_FILE:
|
||||
case DIRECTORY:
|
||||
break;
|
||||
|
||||
default:
|
||||
if (isCallerNotAllowed()) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Cursor result;
|
||||
SQLiteDatabase db = mDbHelper.getReadableDatabase();
|
||||
db.beginTransaction();
|
||||
try {
|
||||
|
@ -592,21 +622,26 @@ public class FileContentProvider extends ContentProvider {
|
|||
sqlQuery.setProjectionMap(projectionMap);
|
||||
}
|
||||
|
||||
if (selectionArgs == null) {
|
||||
// if both are null, let them pass to query
|
||||
if (selectionArgs == null && selection != null) {
|
||||
selectionArgs = new String[]{selection};
|
||||
selection = "(?)";
|
||||
}
|
||||
|
||||
sqlQuery.setStrict(true);
|
||||
Cursor c = sqlQuery.query(db, projectionArray, selection, selectionArgs, null, null, order);
|
||||
c.setNotificationUri(getContext().getContentResolver(), uri);
|
||||
c.setNotificationUri(mContext.getContentResolver(), uri);
|
||||
return c;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
|
||||
public int update(@NonNull Uri uri, ContentValues values, String selection, String[] selectionArgs) {
|
||||
|
||||
int count = 0;
|
||||
if (isCallerNotAllowed()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int count;
|
||||
SQLiteDatabase db = mDbHelper.getWritableDatabase();
|
||||
db.beginTransaction();
|
||||
try {
|
||||
|
@ -615,7 +650,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
getContext().getContentResolver().notifyChange(uri, null);
|
||||
mContext.getContentResolver().notifyChange(uri, null);
|
||||
return count;
|
||||
}
|
||||
|
||||
|
@ -635,8 +670,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
case CAPABILITIES:
|
||||
return db.update(ProviderTableMeta.CAPABILITIES_TABLE_NAME, values, selection, selectionArgs);
|
||||
case UPLOADS:
|
||||
int ret = db.update(ProviderTableMeta.UPLOADS_TABLE_NAME, values, selection, selectionArgs);
|
||||
return ret;
|
||||
return db.update(ProviderTableMeta.UPLOADS_TABLE_NAME, values, selection, selectionArgs);
|
||||
case SYNCED_FOLDERS:
|
||||
return db.update(ProviderTableMeta.SYNCED_FOLDERS_TABLE_NAME, values, selection, selectionArgs);
|
||||
case ARBITRARY_DATA:
|
||||
|
@ -648,8 +682,9 @@ public class FileContentProvider extends ContentProvider {
|
|||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations)
|
||||
public ContentProviderResult[] applyBatch(@NonNull ArrayList<ContentProviderOperation> operations)
|
||||
throws OperationApplicationException {
|
||||
Log_OC.d("FileContentProvider", "applying batch in provider " + this +
|
||||
" (temporary: " + isTemporary() + ")");
|
||||
|
@ -674,7 +709,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
|
||||
class DataBaseHelper extends SQLiteOpenHelper {
|
||||
|
||||
public DataBaseHelper(Context context) {
|
||||
DataBaseHelper(Context context) {
|
||||
super(context, ProviderMeta.DB_NAME, null, ProviderMeta.DB_VERSION);
|
||||
|
||||
}
|
||||
|
@ -685,7 +720,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
Log_OC.i(SQL, "Entering in onCreate");
|
||||
createFilesTable(db);
|
||||
|
||||
// Create ocshares table
|
||||
// Create OCShares table
|
||||
createOCSharesTable(db);
|
||||
|
||||
// Create capabilities table
|
||||
|
@ -796,7 +831,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
ADD_COLUMN + ProviderTableMeta.FILE_PUBLIC_LINK + " TEXT " +
|
||||
" DEFAULT NULL");
|
||||
|
||||
// Create table ocshares
|
||||
// Create table OCShares
|
||||
createOCSharesTable(db);
|
||||
|
||||
upgraded = true;
|
||||
|
@ -1189,6 +1224,21 @@ public class FileContentProvider extends ContentProvider {
|
|||
}
|
||||
}
|
||||
|
||||
if (oldVersion < 26 && newVersion >= 26) {
|
||||
Log_OC.i(SQL, "Entering in the #26 Adding CRC32 column to filesystem table");
|
||||
db.beginTransaction();
|
||||
try {
|
||||
db.execSQL(ALTER_TABLE + ProviderTableMeta.FILESYSTEM_TABLE_NAME +
|
||||
ADD_COLUMN + ProviderTableMeta.FILESYSTEM_CRC32 + " TEXT ");
|
||||
|
||||
upgraded = true;
|
||||
db.setTransactionSuccessful();
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!upgraded) {
|
||||
Log_OC.i(SQL, String.format(Locale.ENGLISH, UPGRADE_VERSION_MSG, oldVersion, newVersion));
|
||||
}
|
||||
|
@ -1243,7 +1293,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
}
|
||||
|
||||
private void createOCSharesTable(SQLiteDatabase db) {
|
||||
// Create ocshares table
|
||||
// Create OCShares table
|
||||
db.execSQL("CREATE TABLE " + ProviderTableMeta.OCSHARES_TABLE_NAME + "("
|
||||
+ ProviderTableMeta._ID + " INTEGER PRIMARY KEY, "
|
||||
+ ProviderTableMeta.OCSHARES_FILE_SOURCE + INTEGER
|
||||
|
@ -1380,6 +1430,7 @@ public class FileContentProvider extends ContentProvider {
|
|||
+ ProviderTableMeta.FILESYSTEM_FILE_FOUND_RECENTLY + " LONG, "
|
||||
+ ProviderTableMeta.FILESYSTEM_FILE_SENT_FOR_UPLOAD + " INTEGER, "
|
||||
+ ProviderTableMeta.FILESYSTEM_SYNCED_FOLDER_ID + " STRING, "
|
||||
+ ProviderTableMeta.FILESYSTEM_CRC32 + " STRING, "
|
||||
+ ProviderTableMeta.FILESYSTEM_FILE_MODIFIED + " LONG );"
|
||||
);
|
||||
}
|
||||
|
@ -1499,4 +1550,15 @@ public class FileContentProvider extends ContentProvider {
|
|||
c.close();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isCallerNotAllowed() {
|
||||
String callingPackage;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
callingPackage = getCallingPackage();
|
||||
} else {
|
||||
callingPackage = mContext.getPackageManager().getNameForUid(Binder.getCallingUid());
|
||||
}
|
||||
|
||||
return callingPackage == null || !callingPackage.contains(mContext.getPackageName());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1335,53 +1335,50 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
|
|||
*/
|
||||
public void fetchExternalLinks(final boolean force) {
|
||||
if (getBaseContext().getResources().getBoolean(R.bool.show_external_links)) {
|
||||
Thread t = new Thread(new Runnable() {
|
||||
public void run() {
|
||||
// fetch capabilities as early as possible
|
||||
if ((getCapabilities() == null || getCapabilities().getAccountName().isEmpty())
|
||||
&& getStorageManager() != null) {
|
||||
GetCapabilitiesOperarion getCapabilities = new GetCapabilitiesOperarion();
|
||||
getCapabilities.execute(getStorageManager(), getBaseContext());
|
||||
}
|
||||
Thread t = new Thread(() -> {
|
||||
// fetch capabilities as early as possible
|
||||
if ((getCapabilities() == null || getCapabilities().getAccountName().isEmpty())
|
||||
&& getStorageManager() != null) {
|
||||
GetCapabilitiesOperarion getCapabilities = new GetCapabilitiesOperarion();
|
||||
getCapabilities.execute(getStorageManager(), getBaseContext());
|
||||
}
|
||||
|
||||
Account account = AccountUtils.getCurrentOwnCloudAccount(DrawerActivity.this);
|
||||
Account account = AccountUtils.getCurrentOwnCloudAccount(DrawerActivity.this);
|
||||
|
||||
if (account != null && getStorageManager() != null &&
|
||||
getStorageManager().getCapability(account.name) != null &&
|
||||
getStorageManager().getCapability(account.name).getExternalLinks().isTrue()) {
|
||||
externalLinksProvider.deleteAllExternalLinks();
|
||||
|
||||
int count = sharedPreferences.getInt(EXTERNAL_LINKS_COUNT, -1);
|
||||
if (count > 10 || count == -1 || force) {
|
||||
if (force) {
|
||||
Log_OC.d("ExternalLinks", "force update");
|
||||
if (account != null && getStorageManager() != null &&
|
||||
getStorageManager().getCapability(account.name) != null &&
|
||||
getStorageManager().getCapability(account.name).getExternalLinks().isTrue()) {
|
||||
|
||||
int count = sharedPreferences.getInt(EXTERNAL_LINKS_COUNT, -1);
|
||||
if (count > 10 || count == -1 || force) {
|
||||
if (force) {
|
||||
Log_OC.d("ExternalLinks", "force update");
|
||||
}
|
||||
|
||||
sharedPreferences.edit().putInt(EXTERNAL_LINKS_COUNT, 0).apply();
|
||||
|
||||
Log_OC.d("ExternalLinks", "update via api");
|
||||
RemoteOperation getExternalLinksOperation = new ExternalLinksOperation();
|
||||
RemoteOperationResult result = getExternalLinksOperation.execute(account, DrawerActivity.this);
|
||||
|
||||
if (result.isSuccess() && result.getData() != null) {
|
||||
externalLinksProvider.deleteAllExternalLinks();
|
||||
|
||||
ArrayList<ExternalLink> externalLinks = (ArrayList<ExternalLink>) (Object) result.getData();
|
||||
|
||||
for (ExternalLink link : externalLinks) {
|
||||
externalLinksProvider.storeExternalLink(link);
|
||||
}
|
||||
|
||||
sharedPreferences.edit().putInt(EXTERNAL_LINKS_COUNT, 0).apply();
|
||||
|
||||
Log_OC.d("ExternalLinks", "update via api");
|
||||
ExternalLinksProvider externalLinksProvider = new ExternalLinksProvider(getContentResolver());
|
||||
|
||||
RemoteOperation getExternalLinksOperation = new ExternalLinksOperation();
|
||||
RemoteOperationResult result = getExternalLinksOperation.execute(account, DrawerActivity.this);
|
||||
|
||||
if (result.isSuccess() && result.getData() != null) {
|
||||
externalLinksProvider.deleteAllExternalLinks();
|
||||
|
||||
ArrayList<ExternalLink> externalLinks = (ArrayList<ExternalLink>) (Object) result.getData();
|
||||
|
||||
for (ExternalLink link : externalLinks) {
|
||||
externalLinksProvider.storeExternalLink(link);
|
||||
}
|
||||
|
||||
runOnUiThread(() -> updateExternalLinksInDrawer());
|
||||
}
|
||||
} else {
|
||||
sharedPreferences.edit().putInt(EXTERNAL_LINKS_COUNT, count + 1).apply();
|
||||
}
|
||||
} else {
|
||||
Log_OC.d("ExternalLinks", "links disabled");
|
||||
sharedPreferences.edit().putInt(EXTERNAL_LINKS_COUNT, count + 1).apply();
|
||||
}
|
||||
} else {
|
||||
Log_OC.d("ExternalLinks", "links disabled");
|
||||
}
|
||||
runOnUiThread(() -> updateExternalLinksInDrawer());
|
||||
});
|
||||
|
||||
t.start();
|
||||
|
|
|
@ -1449,9 +1449,6 @@ public class FileDisplayActivity extends HookActivity
|
|||
case OCFileListFragment.DOWNLOAD_SEND:
|
||||
sendDownloadedFile();
|
||||
break;
|
||||
case OCFileListFragment.DOWNLOAD_SET_AS:
|
||||
setPictureAs();
|
||||
break;
|
||||
default:
|
||||
// do nothing
|
||||
break;
|
||||
|
@ -1609,7 +1606,7 @@ public class FileDisplayActivity extends HookActivity
|
|||
mUploaderBinder = null;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private MediaServiceConnection newMediaConnection(){
|
||||
return new MediaServiceConnection();
|
||||
|
@ -1639,7 +1636,7 @@ public class FileDisplayActivity extends HookActivity
|
|||
mMediaServiceBinder = null;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the view associated to the activity after the finish of some operation over files
|
||||
|
@ -1986,12 +1983,6 @@ public class FileDisplayActivity extends HookActivity
|
|||
mWaitingToSend = null;
|
||||
}
|
||||
|
||||
private void setPictureAs() {
|
||||
getFileOperationsHelper().setPictureAs(mWaitingToSend);
|
||||
mWaitingToSend = null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Requests the download of the received {@link OCFile} , updates the UI
|
||||
* to monitor the download progress and prepares the activity to send the file
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
/**
|
||||
/*
|
||||
* ownCloud Android client application
|
||||
*
|
||||
* @author masensio
|
||||
* @author David A. Velasco
|
||||
* @author Juan Carlos González Cabrero
|
||||
* Copyright (C) 2015 ownCloud Inc.
|
||||
* <p/>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2,
|
||||
* as published by the Free Software Foundation.
|
||||
* <p/>
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* <p/>
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -32,6 +32,7 @@ import android.support.v4.app.FragmentTransaction;
|
|||
|
||||
import com.owncloud.android.R;
|
||||
import com.owncloud.android.datamodel.OCFile;
|
||||
import com.owncloud.android.lib.common.OwnCloudAccount;
|
||||
import com.owncloud.android.lib.common.accounts.AccountUtils;
|
||||
import com.owncloud.android.lib.common.operations.RemoteOperation;
|
||||
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
|
||||
|
@ -313,7 +314,19 @@ public class ShareActivity extends FileActivity implements ShareFragmentListener
|
|||
|
||||
intentToShareLink.putExtra(Intent.EXTRA_TEXT, link);
|
||||
intentToShareLink.setType("text/plain");
|
||||
String username = AccountUtils.getUsernameForAccount(getAccount());
|
||||
|
||||
String username;
|
||||
try {
|
||||
OwnCloudAccount oca = new OwnCloudAccount(getAccount(), this);
|
||||
if (oca.getDisplayName() != null && !oca.getDisplayName().isEmpty()) {
|
||||
username = oca.getDisplayName();
|
||||
} else {
|
||||
username = AccountUtils.getUsernameForAccount(getAccount());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
username = AccountUtils.getUsernameForAccount(getAccount());
|
||||
}
|
||||
|
||||
if (username != null) {
|
||||
intentToShareLink.putExtra(
|
||||
Intent.EXTRA_SUBJECT,
|
||||
|
|
|
@ -129,7 +129,6 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
|
|||
|
||||
public static final String DOWNLOAD_BEHAVIOUR = "DOWNLOAD_BEHAVIOUR";
|
||||
public static final String DOWNLOAD_SEND = "DOWNLOAD_SEND";
|
||||
public static final String DOWNLOAD_SET_AS = "DOWNLOAD_SET_AS";
|
||||
|
||||
public static final String SEARCH_EVENT = "SEARCH_EVENT";
|
||||
|
||||
|
@ -985,12 +984,7 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
|
|||
}
|
||||
}
|
||||
case R.id.action_set_as_wallpaper: {
|
||||
if (singleFile.isDown()) {
|
||||
mContainerActivity.getFileOperationsHelper().setPictureAs(singleFile);
|
||||
} else {
|
||||
Log_OC.d(TAG, singleFile.getRemotePath() + " : File must be downloaded");
|
||||
((FileDisplayActivity) mContainerActivity).startDownloadForSending(singleFile, DOWNLOAD_SET_AS);
|
||||
}
|
||||
mContainerActivity.getFileOperationsHelper().setPictureAs(singleFile, getView());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,9 +30,10 @@ import android.content.pm.ResolveInfo;
|
|||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v4.content.FileProvider;
|
||||
import android.view.View;
|
||||
import android.webkit.MimeTypeMap;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.owncloud.android.MainApp;
|
||||
import com.owncloud.android.R;
|
||||
|
@ -56,6 +57,7 @@ import com.owncloud.android.ui.events.FavoriteEvent;
|
|||
import com.owncloud.android.ui.events.SyncEventFinished;
|
||||
import com.owncloud.android.utils.DisplayUtils;
|
||||
import com.owncloud.android.utils.FileStorageUtils;
|
||||
import com.owncloud.android.utils.UriUtils;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
|
@ -580,32 +582,36 @@ public class FileOperationsHelper {
|
|||
}
|
||||
}
|
||||
|
||||
public void setPictureAs(OCFile file) {
|
||||
public void setPictureAs(OCFile file, View view) {
|
||||
if (file != null) {
|
||||
if (file.isDown()) {
|
||||
Context context = MainApp.getAppContext();
|
||||
Context context = MainApp.getAppContext();
|
||||
Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
|
||||
Uri uri;
|
||||
|
||||
try {
|
||||
try {
|
||||
if (file.isDown()) {
|
||||
File externalFile = new File(file.getStoragePath());
|
||||
Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
|
||||
Uri sendUri;
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
sendUri = FileProvider.getUriForFile(context,
|
||||
uri = FileProvider.getUriForFile(context,
|
||||
context.getResources().getString(R.string.file_provider_authority), externalFile);
|
||||
} else {
|
||||
sendUri = Uri.fromFile(externalFile);
|
||||
uri = Uri.fromFile(externalFile);
|
||||
}
|
||||
|
||||
intent.setDataAndType(sendUri, file.getMimetype());
|
||||
intent.putExtra("mimeType", file.getMimetype());
|
||||
mFileActivity.startActivityForResult(Intent.createChooser(intent,
|
||||
mFileActivity.getString(R.string.set_as)), 200);
|
||||
|
||||
} catch (ActivityNotFoundException exception) {
|
||||
Toast.makeText(context, R.string.picture_set_as_no_app, Toast.LENGTH_LONG).show();
|
||||
} else {
|
||||
uri = Uri.parse(UriUtils.URI_CONTENT_SCHEME +
|
||||
context.getResources().getString(R.string.image_cache_provider_authority) +
|
||||
file.getRemotePath());
|
||||
}
|
||||
|
||||
intent.setDataAndType(uri, file.getMimetype());
|
||||
mFileActivity.startActivityForResult(Intent.createChooser(intent,
|
||||
mFileActivity.getString(R.string.set_as)), 200);
|
||||
|
||||
intent.setDataAndType(uri, file.getMimetype());
|
||||
} catch (ActivityNotFoundException exception) {
|
||||
Snackbar.make(view, R.string.picture_set_as_no_app, Snackbar.LENGTH_LONG).show();
|
||||
}
|
||||
} else {
|
||||
Log_OC.wtf(TAG, "Trying to send a NULL OCFile");
|
||||
|
|
|
@ -452,7 +452,7 @@ public class PreviewImageFragment extends FileFragment {
|
|||
return true;
|
||||
|
||||
case R.id.action_set_as_wallpaper:
|
||||
mContainerActivity.getFileOperationsHelper().setPictureAs(getFile());
|
||||
mContainerActivity.getFileOperationsHelper().setPictureAs(getFile(), getImageView());
|
||||
return true;
|
||||
|
||||
default:
|
||||
|
|
|
@ -356,7 +356,6 @@
|
|||
<string name="pref_behaviour_entries_keep_file">guardáu en carpeta orixinal</string>
|
||||
<string name="pref_behaviour_entries_move">movíu a la carpeta d\'aplicaciones</string>
|
||||
<string name="prefs_storage_path">Camín d\'almacenamientu</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -300,7 +300,6 @@
|
|||
<string name="pref_behaviour_entries_move">премествани в папката на приложението</string>
|
||||
<string name="pref_behaviour_entries_delete_file">изтривани</string>
|
||||
<string name="prefs_storage_path">Път до хранилището</string>
|
||||
<string name="prefs_common">Познато</string>
|
||||
|
||||
<string name="share_dialog_title">Споделяне</string>
|
||||
<string name="share_file">Споделяне на %1$s</string>
|
||||
|
|
|
@ -392,7 +392,6 @@
|
|||
<string name="pref_behaviour_entries_move">mogut a la carpeta de l\'aplicació</string>
|
||||
<string name="pref_behaviour_entries_delete_file">eliminat</string>
|
||||
<string name="prefs_storage_path">Ruta d\'emmagatzematge</string>
|
||||
<string name="prefs_common">Comú</string>
|
||||
|
||||
<string name="share_dialog_title">Compartint</string>
|
||||
<string name="share_file">Comparteix %1$s</string>
|
||||
|
|
|
@ -467,7 +467,6 @@
|
|||
<string name="pref_behaviour_entries_move">přesunut do adresáře aplikace</string>
|
||||
<string name="pref_behaviour_entries_delete_file">smazáno</string>
|
||||
<string name="prefs_storage_path">Cesta k úložišti</string>
|
||||
<string name="prefs_common">Obvyklý</string>
|
||||
|
||||
<string name="share_dialog_title">Sdílení</string>
|
||||
<string name="share_file">Sdílet %1$s</string>
|
||||
|
|
|
@ -346,7 +346,6 @@
|
|||
|
||||
<string name="select_all">Vælg alle</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Slettet</string>
|
||||
<string name="prefs_common">Almindelig</string>
|
||||
|
||||
<string name="share_dialog_title">Deling</string>
|
||||
<string name="share_file">Del %1$s</string>
|
||||
|
|
|
@ -470,7 +470,6 @@
|
|||
<string name="pref_behaviour_entries_move">in den App-Ordner verschoben</string>
|
||||
<string name="pref_behaviour_entries_delete_file">gelöscht</string>
|
||||
<string name="prefs_storage_path">Speicherort</string>
|
||||
<string name="prefs_common">Allgemein</string>
|
||||
|
||||
<string name="share_dialog_title">Teilen</string>
|
||||
<string name="share_file">Teile %1$s</string>
|
||||
|
|
|
@ -470,7 +470,6 @@
|
|||
<string name="pref_behaviour_entries_move">in den App-Ordner verschoben</string>
|
||||
<string name="pref_behaviour_entries_delete_file">gelöscht</string>
|
||||
<string name="prefs_storage_path">Speicherort</string>
|
||||
<string name="prefs_common">Allgemein</string>
|
||||
|
||||
<string name="share_dialog_title">Teilen</string>
|
||||
<string name="share_file">Teile %1$s</string>
|
||||
|
|
|
@ -421,7 +421,6 @@
|
|||
<string name="pref_behaviour_entries_move">μετακινήθηκε στον φάκελο εφαρμογών</string>
|
||||
<string name="pref_behaviour_entries_delete_file">διαγράφηκε</string>
|
||||
<string name="prefs_storage_path">Διαδρομή αποθηκευτικού χώρου</string>
|
||||
<string name="prefs_common">Κοινό</string>
|
||||
|
||||
<string name="share_dialog_title">Γίνεται διαμοιρασμός</string>
|
||||
<string name="share_file">Διαμοιρασμός %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">moved to app folder</string>
|
||||
<string name="pref_behaviour_entries_delete_file">deleted</string>
|
||||
<string name="prefs_storage_path">Storage path</string>
|
||||
<string name="prefs_common">Common</string>
|
||||
|
||||
<string name="share_dialog_title">Sharing</string>
|
||||
<string name="share_file">Share %1$s</string>
|
||||
|
|
|
@ -416,7 +416,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la capreta de la aplicación</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido a la carpeta de la app</string>
|
||||
<string name="pref_behaviour_entries_delete_file">borrado</string>
|
||||
<string name="prefs_storage_path">Ruta de almacenamiento</string>
|
||||
<string name="prefs_common">Común</string>
|
||||
|
||||
<string name="share_dialog_title">Compartiendo</string>
|
||||
<string name="share_file">Compartir %1$s</string>
|
||||
|
|
|
@ -363,7 +363,6 @@ Mesedez, baimendu berriz</string>
|
|||
<string name="pref_behaviour_entries_move">Aplikazioaren karpetara mugitu</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Borratua</string>
|
||||
<string name="prefs_storage_path">Biltegiratze helbidea</string>
|
||||
<string name="prefs_common">Komuna</string>
|
||||
|
||||
<string name="share_dialog_title">Partekatzea</string>
|
||||
<string name="share_file">Partekatu %1$s</string>
|
||||
|
|
|
@ -366,7 +366,6 @@
|
|||
<string name="pref_behaviour_entries_move">siirretään sovelluskansioon</string>
|
||||
<string name="pref_behaviour_entries_delete_file">poistettu</string>
|
||||
<string name="prefs_storage_path">Tallennustilan polku</string>
|
||||
<string name="prefs_common">Yleinen</string>
|
||||
|
||||
<string name="share_dialog_title">Jakaminen</string>
|
||||
<string name="share_file">Jaa %1$s</string>
|
||||
|
|
|
@ -471,7 +471,6 @@ Attention la suppression est irréversible.</string>
|
|||
<string name="pref_behaviour_entries_move">déplacé vers le dossier de l\'application</string>
|
||||
<string name="pref_behaviour_entries_delete_file">supprimé</string>
|
||||
<string name="prefs_storage_path">Chemin de stockage</string>
|
||||
<string name="prefs_common">Commun</string>
|
||||
|
||||
<string name="share_dialog_title">Partage</string>
|
||||
<string name="share_file">Partager %1$s</string>
|
||||
|
|
|
@ -470,7 +470,6 @@
|
|||
<string name="pref_behaviour_entries_move">áthelyezve az alkalmazás mappába</string>
|
||||
<string name="pref_behaviour_entries_delete_file">törölt</string>
|
||||
<string name="prefs_storage_path">Tároló útvonal</string>
|
||||
<string name="prefs_common">Általános</string>
|
||||
|
||||
<string name="share_dialog_title">Megosztás</string>
|
||||
<string name="share_file">%1$s megosztása</string>
|
||||
|
|
|
@ -417,7 +417,6 @@
|
|||
<string name="pref_behaviour_entries_move">Dipindahkan ke folder aplikasi</string>
|
||||
<string name="pref_behaviour_entries_delete_file">terhapus</string>
|
||||
<string name="prefs_storage_path">Jalur penyimpanan</string>
|
||||
<string name="prefs_common">Umum</string>
|
||||
|
||||
<string name="share_dialog_title">Berbagi</string>
|
||||
<string name="share_file">Bagikan %1$s</string>
|
||||
|
|
|
@ -463,7 +463,6 @@ Smelltu hér til að fá þér einn frá þjónustuaðila.</string>
|
|||
<string name="pref_behaviour_entries_move">færð í forritsmöppu</string>
|
||||
<string name="pref_behaviour_entries_delete_file">eytt</string>
|
||||
<string name="prefs_storage_path">Slóð á gagnageymslu</string>
|
||||
<string name="prefs_common">Algengt</string>
|
||||
|
||||
<string name="share_dialog_title">Deiling</string>
|
||||
<string name="share_file">Deila %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">spostato nella cartella dell\'applicazione</string>
|
||||
<string name="pref_behaviour_entries_delete_file">eliminato</string>
|
||||
<string name="prefs_storage_path">Percorso di archiviazione</string>
|
||||
<string name="prefs_common">Comune</string>
|
||||
|
||||
<string name="share_dialog_title">Condivisione</string>
|
||||
<string name="share_file">Condividi %1$s</string>
|
||||
|
|
|
@ -334,7 +334,6 @@
|
|||
<string name="pref_behaviour_entries_move">アプリフォルダに移動</string>
|
||||
<string name="pref_behaviour_entries_delete_file">削除されました</string>
|
||||
<string name="prefs_storage_path">ストレージの場所</string>
|
||||
<string name="prefs_common">共通の</string>
|
||||
|
||||
<string name="share_dialog_title">共有</string>
|
||||
<string name="share_file">%1$s を共有</string>
|
||||
|
|
|
@ -465,7 +465,6 @@
|
|||
<string name="pref_behaviour_entries_move">გადატანილია აპლიკაციის დირექტორიაში</string>
|
||||
<string name="pref_behaviour_entries_delete_file">გაუქმებულია</string>
|
||||
<string name="prefs_storage_path">საცავის მისამართი</string>
|
||||
<string name="prefs_common">ჩვეული</string>
|
||||
|
||||
<string name="share_dialog_title">გაზიარება</string>
|
||||
<string name="share_file">%1$s-ის გაზიარება</string>
|
||||
|
|
|
@ -429,7 +429,6 @@
|
|||
<string name="pref_behaviour_entries_move">perkelti į app aplanką</string>
|
||||
<string name="pref_behaviour_entries_delete_file">Ištrintas</string>
|
||||
<string name="prefs_storage_path">Saugojimo kelias</string>
|
||||
<string name="prefs_common">Bendras pavadinimas:</string>
|
||||
|
||||
<string name="share_dialog_title">Dalijimasis</string>
|
||||
<string name="share_file">Dalintis %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">flyttet til program-mappe</string>
|
||||
<string name="pref_behaviour_entries_delete_file">slettet</string>
|
||||
<string name="prefs_storage_path">Lagrings-sti</string>
|
||||
<string name="prefs_common">Felles</string>
|
||||
|
||||
<string name="share_dialog_title">Deling</string>
|
||||
<string name="share_file">Del %1$s</string>
|
||||
|
|
|
@ -470,7 +470,6 @@ Kies er eentje van een provider.</string>
|
|||
<string name="pref_behaviour_entries_move">verplaatst worden naar app-map</string>
|
||||
<string name="pref_behaviour_entries_delete_file">verwijderd worden</string>
|
||||
<string name="prefs_storage_path">Opslagpad</string>
|
||||
<string name="prefs_common">Gemeenschappelijk</string>
|
||||
|
||||
<string name="share_dialog_title">Delen</string>
|
||||
<string name="share_file">Deel %1$s</string>
|
||||
|
|
|
@ -453,7 +453,6 @@
|
|||
<string name="pref_behaviour_entries_move">przeniesiony do folderu aplikacji</string>
|
||||
<string name="pref_behaviour_entries_delete_file">usunięty</string>
|
||||
<string name="prefs_storage_path">Ścieżka przechowywania</string>
|
||||
<string name="prefs_common">Wspólny</string>
|
||||
|
||||
<string name="share_dialog_title">Udostępnianie</string>
|
||||
<string name="share_file">Współdziel %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">movido para a pasta aplicativos</string>
|
||||
<string name="pref_behaviour_entries_delete_file">excluído</string>
|
||||
<string name="prefs_storage_path">Caminho do armazenamento</string>
|
||||
<string name="prefs_common">Comum</string>
|
||||
|
||||
<string name="share_dialog_title">Compartilhamento</string>
|
||||
<string name="share_file">Compartilhar %1$s</string>
|
||||
|
|
|
@ -294,7 +294,6 @@
|
|||
<string name="pref_behaviour_entries_move">mutate în dosarul aplicației</string>
|
||||
<string name="pref_behaviour_entries_delete_file">șterge</string>
|
||||
<string name="prefs_storage_path">Calea către spațiul de depozitare</string>
|
||||
<string name="prefs_common">General</string>
|
||||
|
||||
<string name="share_dialog_title">Partajare</string>
|
||||
<string name="share_file">Partajare %1$s</string>
|
||||
|
|
|
@ -477,7 +477,6 @@
|
|||
<string name="pref_behaviour_entries_move">перемещен в каталог приложения</string>
|
||||
<string name="pref_behaviour_entries_delete_file">удалён</string>
|
||||
<string name="prefs_storage_path">Путь к хранилищу</string>
|
||||
<string name="prefs_common">Основные</string>
|
||||
|
||||
<string name="share_dialog_title">Общий доступ</string>
|
||||
<string name="share_file">Общий ресурс «%1$s»</string>
|
||||
|
|
|
@ -347,7 +347,6 @@
|
|||
<string name="pref_behaviour_entries_move">presunuté do aplikačného priečinka</string>
|
||||
<string name="pref_behaviour_entries_delete_file">vymazané</string>
|
||||
<string name="prefs_storage_path">Cesta úložiska</string>
|
||||
<string name="prefs_common">Bežný</string>
|
||||
|
||||
<string name="share_dialog_title">Sprístupnenie</string>
|
||||
<string name="share_file">Sprístupni %1$s</string>
|
||||
|
|
|
@ -416,7 +416,6 @@
|
|||
<string name="pref_behaviour_entries_move">premakni v mapo programa</string>
|
||||
<string name="pref_behaviour_entries_delete_file">pobrisano</string>
|
||||
<string name="prefs_storage_path">Mesto shrambe</string>
|
||||
<string name="prefs_common">Splošno</string>
|
||||
|
||||
<string name="share_dialog_title">Souporaba</string>
|
||||
<string name="share_file">Omogoči souporabo %1$s</string>
|
||||
|
|
|
@ -444,7 +444,6 @@
|
|||
<string name="pref_behaviour_entries_move">u kalua te dosja e aplikacionit</string>
|
||||
<string name="pref_behaviour_entries_delete_file">të fshira</string>
|
||||
<string name="prefs_storage_path">Rruga e hapsirës ruajtëse</string>
|
||||
<string name="prefs_common">E përbashkët</string>
|
||||
|
||||
<string name="share_dialog_title">Ndarje me të tjerët</string>
|
||||
<string name="share_file">Ndajeni %1$s</string>
|
||||
|
|
|
@ -473,7 +473,6 @@
|
|||
<string name="pref_behaviour_entries_move">премештен у фасциклу апликације</string>
|
||||
<string name="pref_behaviour_entries_delete_file">обрисано</string>
|
||||
<string name="prefs_storage_path">Путања до складишта</string>
|
||||
<string name="prefs_common">Опште</string>
|
||||
|
||||
<string name="share_dialog_title">Дељење</string>
|
||||
<string name="share_file">Подели %1$s</string>
|
||||
|
|
|
@ -421,7 +421,6 @@
|
|||
<string name="pref_behaviour_entries_move">flyttas till Nextcloud-mapp</string>
|
||||
<string name="pref_behaviour_entries_delete_file">raderas</string>
|
||||
<string name="prefs_storage_path">Lagringsplats</string>
|
||||
<string name="prefs_common">Vanlig</string>
|
||||
|
||||
<string name="share_dialog_title">Dela</string>
|
||||
<string name="share_file">Dela %1$s</string>
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
<string name="pref_behaviour_entries_move">app klasörüne taşındı</string>
|
||||
<string name="pref_behaviour_entries_delete_file">silindi</string>
|
||||
<string name="prefs_storage_path">Depolama yolu</string>
|
||||
<string name="prefs_common">Genel</string>
|
||||
|
||||
<string name="share_dialog_title">Paylaşım</string>
|
||||
<string name="share_file">%1$s paylaş</string>
|
||||
|
|
|
@ -437,7 +437,6 @@
|
|||
<string name="pref_behaviour_entries_move">移动到应用文件夹</string>
|
||||
<string name="pref_behaviour_entries_delete_file">删除</string>
|
||||
<string name="prefs_storage_path">存储路径</string>
|
||||
<string name="prefs_common">普通</string>
|
||||
|
||||
<string name="share_dialog_title">共享</string>
|
||||
<string name="share_file">分享 %1$s</string>
|
||||
|
|
|
@ -446,7 +446,6 @@
|
|||
<string name="pref_behaviour_entries_move">移動到應用程式資料夾</string>
|
||||
<string name="pref_behaviour_entries_delete_file">已刪除</string>
|
||||
<string name="prefs_storage_path">儲存路徑</string>
|
||||
<string name="prefs_common">共用</string>
|
||||
|
||||
<string name="share_dialog_title">分享</string>
|
||||
<string name="share_file">分享 %1$s</string>
|
||||
|
|
|
@ -471,7 +471,6 @@
|
|||
<string name="pref_behaviour_entries_move">moved to app folder</string>
|
||||
<string name="pref_behaviour_entries_delete_file">deleted</string>
|
||||
<string name="prefs_storage_path">Storage path</string>
|
||||
<string name="prefs_common">Common</string>
|
||||
|
||||
<string name="share_dialog_title">Sharing</string>
|
||||
<string name="share_file">Share %1$s</string>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
<string name="default_display_name_for_root_folder">Nextcloud dev</string>
|
||||
|
||||
<bool name="logger_enabled">true</bool>
|
||||
<string name="dev_changelog">https://github.com/nextcloud/android/commits/master</string>
|
||||
|
||||
<!--Destination mail for sending log files -->
|
||||
<string name="mail_logger">android@nextcloud.com</string>
|
||||
|
|
Loading…
Reference in a new issue