/* * Nextcloud Talk application * * @author Mario Danic * Copyright (C) 2017 Mario Danic * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * at your option) any later version. * * 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 . * * Part of the code in ShareUtils was inspired by BottomSheet under the Apache licence * located here: https://github.com/Kennyc1012/BottomSheet/blob/master/library/src/main/java/com/kennyc/bottomsheet/BottomSheet.java#L425 */ package com.nextcloud.talk.utils; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.support.annotation.Nullable; import android.text.TextUtils; import com.kennyc.bottomsheet.adapters.AppAdapter; import com.nextcloud.talk.R; import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.models.json.rooms.Room; import com.nextcloud.talk.utils.database.user.UserUtils; import java.util.ArrayList; import java.util.List; import java.util.Set; public class ShareUtils { public static String getStringForIntent(Context context, @Nullable String password, UserUtils userUtils, Room room) { UserEntity userEntity = userUtils.getCurrentUser(); String shareString = ""; if (userEntity != null && context != null) { shareString = String.format(context.getResources().getString(R.string.nc_share_text), userEntity.getBaseUrl(), room.getToken()); if (!TextUtils.isEmpty(password)) { shareString += String.format(context.getResources().getString(R.string.nc_share_text_pass), password); } } return shareString; } public static List getShareApps(Context context, Intent intent, @Nullable Set appsFilter, @Nullable Set toExclude) { if (context == null || intent == null) return null; PackageManager manager = context.getPackageManager(); List apps = manager.queryIntentActivities(intent, 0); if (apps != null && !apps.isEmpty()) { List appResources = new ArrayList<>(apps.size()); boolean shouldCheckPackages = appsFilter != null && !appsFilter.isEmpty(); for (ResolveInfo resolveInfo : apps) { String packageName = resolveInfo.activityInfo.packageName; if (shouldCheckPackages && !appsFilter.contains(packageName)) { continue; } String title = resolveInfo.loadLabel(manager).toString(); String name = resolveInfo.activityInfo.name; Drawable drawable = resolveInfo.loadIcon(manager); appResources.add(new AppAdapter.AppInfo(title, packageName, name, drawable)); } if (toExclude != null && !toExclude.isEmpty()) { List toRemove = new ArrayList<>(); for (AppAdapter.AppInfo appInfo : appResources) { if (toExclude.contains(appInfo.packageName)) { toRemove.add(appInfo); } } if (!toRemove.isEmpty()) appResources.removeAll(toRemove); } return appResources; } return null; } }