2016-06-08 5 views
3

Этот код показывает диалоговое окно доля по умолчаниюПолучить список приложений, которые могут обмениваться данными

Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
sharingIntent.setType("text/html"); 
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Message")); 
startActivity(Intent.createChooser(sharingIntent,"Share using")); 

share dialog

Вопрос: Вместо того, чтобы показывать список приложений в диалоговом окне системы по умолчанию, я хочу, чтобы получить список приложений и показать их в моем пользовательском списке.

+1

, пожалуйста, объясните * я хочу показать список приложений в своем представлении сетки активности не в этом диалоговом окне по умолчанию * –

+0

Я хочу получить список приложений, которые могут отправлять сообщения, чтобы я мог показать это своей деятельностью .. –

+0

попробуйте эту ссылку для получения всех установленных приложений на устройстве http://stackoverflow.com/questions/2695746/how-to-get-a-list-of-installed-android-applications-and-pick-one-to-run – dindinii

ответ

3

Используйте PackageManager с намерением, чтобы получить список приложений, которые могут прослушивать намерение SEND. Из списка возвращенных приложений получите информацию, которую вы хотите отобразить, например. значок, имя и т. д. Для запуска приложения вам потребуется имя пакета, когда пользователь нажмет на него.

PackageManager pm = getActivity().getPackageManager(); 
Intent mainIntent = new Intent(Intent.ACTION_SEND, null); 
mainIntent.setType("text/plain"); 
List<ResolveInfo> resolveInfos = pm.queryIntentActivities(mainIntent, 0); // returns all applications which can listen to the SEND Intent 
for (ResolveInfo info : resolveInfos) { 
    ApplicationInfo applicationInfo = info.activityInfo.applicationInfo; 

    //get package name, icon and label from applicationInfo object and display it in your custom layout 

    //App icon = applicationInfo.loadIcon(pm); 
    //App name = applicationInfo.loadLabel(pm).toString(); 
    //App package name = applicationInfo.packageName; 
} 

После того, как этот набор деталей приложения, вы можете использовать это в адаптере вашего GridView и показать детали.

+0

Спасибо за ответ, он действительно помог мне .. –

+0

Нет проблем. Рад, что это сработало. Приветствия. :) – Swayam

0

Таким образом, вместо обычного всплывающего окна, которое показывает приложения в списке, вы хотите, чтобы пользовательское всплывающее окно показывало приложения в виде сетки?

Это возможно, создавая всплывающее окно с видом сетки самостоятельно. Независимо от того, что это действие с акциями. Затем создайте список приложений, которые вы хотите показать. Вы можете получить их с помощью метода resolveActivity от Intent (или см. Ответ Swayam).
Затем используйте этот список, чтобы заполнить вид сетки.

Смежные вопросы