From: David A. Velasco Date: Fri, 31 Jan 2014 09:43:25 +0000 (+0100) Subject: Added standard menu to select app used to send the link to share a file X-Git-Tag: oc-android-1.5.5~58^2~15^2~3 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/b447bf973faff32db9e4820c493b416b21cbcdac?ds=inline Added standard menu to select app used to send the link to share a file --- diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c1202e63..8ff6870b 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -54,7 +54,6 @@ > - @@ -81,9 +80,12 @@ - + - + + + + targetedShareIntents = new ArrayList(); + List resInfo = getPackageManager().queryIntentActivities(createShareWithLinkIntent(link), PackageManager.MATCH_DEFAULT_ONLY); + String myPackageName = getPackageName(); + if (!resInfo.isEmpty()) { + for (ResolveInfo info : resInfo) { + if (!info.activityInfo.packageName.equalsIgnoreCase(myPackageName)) { + Intent targetedShare = createTargetedShare(link, info.activityInfo.applicationInfo.packageName, info.activityInfo.name); + targetedShareIntents.add(targetedShare); + } + } + } + if (targetedShareIntents.size() > 0) { + Intent firstTargeted = targetedShareIntents.remove(0); + chooserIntent = Intent.createChooser(firstTargeted, getString(R.string.action_share_file)); + chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[] {})); + } else { + // to show standard message + chooserIntent = Intent.createChooser(null, getString(R.string.action_share_file)); + } + startActivity(chooserIntent); + + } else { + Log_OC.wtf(TAG, "Trying to open a NULL OCFile"); + } + } + + private Intent createTargetedShare(String link, String packageName, String className) { + //Intent targetedShare = createShareWithLinkIntent(link); + Intent targetedShare=new Intent(Intent.ACTION_MAIN); + + targetedShare.addCategory(Intent.CATEGORY_LAUNCHER); + targetedShare.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | + Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + Log_OC.e("LOLO", "className: " + className + "\npackageName: " + packageName + "\n"); + targetedShare.setClassName(packageName, className); + return targetedShare; + } + + + private Intent createShareWithLinkIntent(String link) { + Intent intentToShareLink = new Intent(Intent.ACTION_SEND); + intentToShareLink.putExtra(Intent.EXTRA_TEXT, link); + intentToShareLink.setType(HTTP.PLAIN_TEXT_TYPE); + return intentToShareLink; + } + } diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index 7f8ad7e3..c113029d 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -1539,13 +1539,6 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa } - @Override - public void shareFileWithLink(OCFile file) { - CreateShareOperation createShare = new CreateShareOperation(file.getRemotePath(), ShareType.PUBLIC_LINK, "", false, "", 1); - createShare.execute(getAccount(), this, this, mHandler, this); - - } - // public void enableDisableViewGroup(ViewGroup viewGroup, boolean enabled) { // int childCount = viewGroup.getChildCount(); // for (int i = 0; i < childCount; i++) { diff --git a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java index 7bf05274..eebbef8d 100644 --- a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java +++ b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java @@ -339,7 +339,7 @@ public class FileDetailFragment extends FileFragment implements public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_share_file: { - mContainerActivity.shareFileWithLink(getFile()); + mContainerActivity.shareFileWithLink(getFile()); return true; } case R.id.action_open_file_with: { diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 326c835d..8be94778 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -285,7 +285,7 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName mTargetFile = (OCFile) mAdapter.getItem(info.position); switch (item.getItemId()) { case R.id.action_share_file: { - mContainerActivity.shareFileWithLink(getCurrentFile()); + mContainerActivity.shareFileWithLink(mTargetFile); return true; } case R.id.action_rename_file: { diff --git a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java index 7816349b..3caa80a0 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java @@ -481,9 +481,4 @@ public class PreviewImageActivity extends FileActivity implements FileFragment.C } } - @Override - public void shareFileWithLink(OCFile file) { - - } - } diff --git a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java index 8555fa77..d646bd5b 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java @@ -247,6 +247,10 @@ public class PreviewImageFragment extends FileFragment implements OnRemoteOper @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { + case R.id.action_share_file: { + //shareFileWithLink(getFile()); + return true; + } case R.id.action_open_file_with: { openFile(); return true; diff --git a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java index 464ea6db..0baed617 100644 --- a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java @@ -307,6 +307,10 @@ public class PreviewMediaFragment extends FileFragment implements @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { + case R.id.action_share_file: { + //shareFileWithLink(getFile()); + return true; + } case R.id.action_open_file_with: { openFile(); return true;