mirror of
https://github.com/nextcloud/android.git
synced 2024-11-26 15:15:51 +03:00
Implemented option to copy shared link in clipboard instead of trusting in external clipboard front-ends
This commit is contained in:
parent
7a4ac19993
commit
42fc189367
9 changed files with 96 additions and 15 deletions
|
@ -80,12 +80,10 @@
|
|||
<category android:name="android.intent.category.DEFAULT" >
|
||||
</category>
|
||||
|
||||
<data android:mimeType="*/*" android:scheme="content">
|
||||
<data android:mimeType="*/*" >
|
||||
</data>
|
||||
|
||||
<data android:mimeType="*/*" android:scheme="file">
|
||||
</data>
|
||||
</intent-filter>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.activity.Preferences"
|
||||
|
@ -183,6 +181,11 @@
|
|||
</receiver>
|
||||
<service android:name=".files.services.FileObserverService"/>
|
||||
|
||||
<activity
|
||||
android:name=".ui.activity.CopyToClipboardActivity"
|
||||
android:label="@string/copy_link"
|
||||
android:icon="@drawable/copy_link" />
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
|
BIN
res/drawable-hdpi/copy_link.png
Normal file
BIN
res/drawable-hdpi/copy_link.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
BIN
res/drawable-ldpi/copy_link.png
Normal file
BIN
res/drawable-ldpi/copy_link.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
BIN
res/drawable-mdpi/copy_link.png
Normal file
BIN
res/drawable-mdpi/copy_link.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
BIN
res/drawable-xhdpi/copy_link.png
Normal file
BIN
res/drawable-xhdpi/copy_link.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.1 KiB |
|
@ -100,7 +100,7 @@
|
|||
<string name="sync_fail_in_favourites_content">Contents of %1$d files could not be sync\'ed (%2$d conflicts)</string>
|
||||
<string name="sync_foreign_files_forgotten_ticker">Some local files were forgotten</string>
|
||||
<string name="sync_foreign_files_forgotten_content">%1$d files out of the %2$s directory could not be copied into</string>
|
||||
<string name="sync_foreign_files_forgotten_explanation">As of version 1.3.16, files uploaded from this device are copied into the local %1$s folder to prevent data loss when a single file is synced with multiple accounts.\n\nDue to this change, all files uploaded in previous versions of this app were copied into the %2$s folder. However, an error prevented the completion of this operation during account synchronization. You may either leave the file(s) as is and remove the link to %3$s, or move the file(s) into the %1$s directory and retain the link to %4$s.\n\nListed below are the local file(s), and the the remote file(s) in %5$s they were linked to.</string>
|
||||
<string name="sync_foreign_files_forgotten_explanation">As of version 1.3.16, files uploaded from this device are copied into the local %1$s folder to prevent data loss when a single file is synced with multiple accounts.\n\nDue to this change, all files uploaded in previous versions of this app were copied into the %2$s folder. However, an error prevented the completion of this operation during account synchronization. You may either leave the file(s) as is and remove the link to %3$s, or move the file(s) into the %1$s directory and retain the link to %4$s.\n\nListed below are the local file(s), and the remote file(s) in %5$s they were linked to.</string>
|
||||
<string name="sync_current_folder_was_removed">Folder %1$s does not exist anymore</string>
|
||||
<string name="foreign_files_move">"Move all"</string>
|
||||
<string name="foreign_files_success">"All files were moved"</string>
|
||||
|
@ -252,4 +252,7 @@
|
|||
<string name="share_link_file_error">An error occurred while trying to share this file or folder</string>
|
||||
<string name="unshare_link_file_no_exist">Unable to unshare this file or folder. It does not exist.</string>
|
||||
<string name="unshare_link_file_error">An error occurred while trying to unshare this file or folder</string>
|
||||
|
||||
<string name="copy_link">Copy link</string>
|
||||
<string name="clipboard_text_copied">Copied to clipboard</string>
|
||||
</resources>
|
||||
|
|
|
@ -33,7 +33,7 @@ import com.owncloud.android.lib.network.webdav.WebdavUtils;
|
|||
import com.owncloud.android.lib.utils.OwnCloudVersion;
|
||||
import com.owncloud.android.services.OperationsService;
|
||||
import com.owncloud.android.ui.activity.FileActivity;
|
||||
import com.owncloud.android.ui.dialog.ActivityChooserDialog;
|
||||
import com.owncloud.android.ui.dialog.ShareLinkToDialog;
|
||||
import com.owncloud.android.utils.Log_OC;
|
||||
|
||||
/**
|
||||
|
@ -89,7 +89,7 @@ public class FileOperationsHelper {
|
|||
String link = "https://fake.url";
|
||||
Intent intent = createShareWithLinkIntent(link);
|
||||
String[] packagesToExclude = new String[] { callerActivity.getPackageName() };
|
||||
DialogFragment chooserDialog = ActivityChooserDialog.newInstance(intent, packagesToExclude, file);
|
||||
DialogFragment chooserDialog = ShareLinkToDialog.newInstance(intent, packagesToExclude, file);
|
||||
chooserDialog.show(callerActivity.getSupportFragmentManager(), FTAG_CHOOSER_DIALOG);
|
||||
|
||||
} else {
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
/* ownCloud Android client application
|
||||
* Copyright (C) 2012-2014 ownCloud Inc.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.owncloud.android.ui.activity;
|
||||
|
||||
import com.owncloud.android.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ClipData;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.text.ClipboardManager;
|
||||
import android.widget.Toast;
|
||||
|
||||
/**
|
||||
* Activity copying the text of the received Intent into the system clibpoard.
|
||||
*
|
||||
* @author David A. Velasco
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public class CopyToClipboardActivity extends Activity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// get the clipboard system service
|
||||
ClipboardManager clipboardManager = (ClipboardManager) this.getSystemService(CLIPBOARD_SERVICE);
|
||||
|
||||
// get the text to copy into the clipboard
|
||||
Intent intent = getIntent();
|
||||
CharSequence text = intent.getCharSequenceExtra(Intent.EXTRA_TEXT);
|
||||
|
||||
// and put the text the clipboard
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
|
||||
// API level >= 11 -> modern Clipboard
|
||||
ClipData clip = ClipData.newPlainText("ownCloud was here", text);
|
||||
((android.content.ClipboardManager)clipboardManager).setPrimaryClip(clip);
|
||||
|
||||
} else {
|
||||
// API level >= 11 -> legacy Clipboard
|
||||
clipboardManager.setText(text);
|
||||
}
|
||||
|
||||
// alert the user that the text is in the clipboard and we're done
|
||||
Toast.makeText(this, R.string.clipboard_text_copied, Toast.LENGTH_SHORT).show();
|
||||
|
||||
finish();
|
||||
}
|
||||
|
||||
}
|
|
@ -43,6 +43,7 @@ import com.actionbarsherlock.app.SherlockDialogFragment;
|
|||
import com.owncloud.android.R;
|
||||
import com.owncloud.android.datamodel.OCFile;
|
||||
import com.owncloud.android.files.FileOperationsHelper;
|
||||
import com.owncloud.android.ui.activity.CopyToClipboardActivity;
|
||||
import com.owncloud.android.ui.activity.FileActivity;
|
||||
import com.owncloud.android.utils.Log_OC;
|
||||
|
||||
|
@ -52,19 +53,19 @@ import com.owncloud.android.utils.Log_OC;
|
|||
*
|
||||
* @author David A. Velasco
|
||||
*/
|
||||
public class ActivityChooserDialog extends SherlockDialogFragment {
|
||||
public class ShareLinkToDialog extends SherlockDialogFragment {
|
||||
|
||||
private final static String TAG = ActivityChooserDialog.class.getSimpleName();
|
||||
private final static String ARG_INTENT = ActivityChooserDialog.class.getSimpleName() + ".ARG_INTENT";
|
||||
private final static String ARG_PACKAGES_TO_EXCLUDE = ActivityChooserDialog.class.getSimpleName() + ".ARG_PACKAGES_TO_EXCLUDE";
|
||||
private final static String ARG_FILE_TO_SHARE = ActivityChooserDialog.class.getSimpleName() + ".FILE_TO_SHARE";
|
||||
private final static String TAG = ShareLinkToDialog.class.getSimpleName();
|
||||
private final static String ARG_INTENT = ShareLinkToDialog.class.getSimpleName() + ".ARG_INTENT";
|
||||
private final static String ARG_PACKAGES_TO_EXCLUDE = ShareLinkToDialog.class.getSimpleName() + ".ARG_PACKAGES_TO_EXCLUDE";
|
||||
private final static String ARG_FILE_TO_SHARE = ShareLinkToDialog.class.getSimpleName() + ".FILE_TO_SHARE";
|
||||
|
||||
private ActivityAdapter mAdapter;
|
||||
private OCFile mFile;
|
||||
private Intent mIntent;
|
||||
|
||||
public static ActivityChooserDialog newInstance(Intent intent, String[] packagesToExclude, OCFile fileToShare) {
|
||||
ActivityChooserDialog f = new ActivityChooserDialog();
|
||||
public static ShareLinkToDialog newInstance(Intent intent, String[] packagesToExclude, OCFile fileToShare) {
|
||||
ShareLinkToDialog f = new ShareLinkToDialog();
|
||||
Bundle args = new Bundle();
|
||||
args.putParcelable(ARG_INTENT, intent);
|
||||
args.putStringArray(ARG_PACKAGES_TO_EXCLUDE, packagesToExclude);
|
||||
|
@ -73,7 +74,7 @@ public class ActivityChooserDialog extends SherlockDialogFragment {
|
|||
return f;
|
||||
}
|
||||
|
||||
public ActivityChooserDialog() {
|
||||
public ShareLinkToDialog() {
|
||||
super();
|
||||
Log_OC.d(TAG, "constructor");
|
||||
}
|
||||
|
@ -95,6 +96,14 @@ public class ActivityChooserDialog extends SherlockDialogFragment {
|
|||
it.remove();
|
||||
}
|
||||
}
|
||||
|
||||
// add activity for copy to clipboard
|
||||
Intent copyToClipboardIntent = new Intent(getSherlockActivity(), CopyToClipboardActivity.class);
|
||||
List<ResolveInfo> copyToClipboard = pm.queryIntentActivities(copyToClipboardIntent, 0);
|
||||
if (!copyToClipboard.isEmpty()) {
|
||||
activities.add(copyToClipboard.get(0));
|
||||
}
|
||||
|
||||
Collections.sort(activities, new ResolveInfo.DisplayNameComparator(pm));
|
||||
mAdapter = new ActivityAdapter(getSherlockActivity(), pm, activities);
|
||||
|
Loading…
Reference in a new issue