Как узнать, какое намерение выбрано в Intent.ACTION_SEND?

Я хочу использовать Android Intent.ACTION_SEND для быстрого обмена чем-то. Итак, я получил список разделов следующим образом: Список намерений о совместном использовании

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

Итак, можно ли это сделать?

Вы не можете получить такую ​​информацию.

Если вы не создадите собственную реализацию диалога для выбора активности.

Чтобы создать такой диалог, вам нужно использовать PackageManager и его queryIntentActivities() . Функция возвращает List .

ResolveInfo содержит некоторую информацию о деятельности ( resolveInfo.activityInfo.packageName ), а с помощью PackageManager вы можете получить другую информацию (полезную для отображения активности в диалоговом окне) – ярлык приложения, ярлык приложения, ….

Отображение результатов в списке в диалоговом окне (или в виде действия в виде диалога). Когда элемент кликается, создайте новый Intent.ACTION_SEND, добавьте нужное содержимое и добавьте пакет выбранного действия ( intent.setPackage(pkgName) ).

Существует нет прямого метода доступа к такой информации ….

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

 //sharing implementation Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); // what type of data needs to be send by sharing sharingIntent.setType("text/plain"); // package names PackageManager pm = getPackageManager(); // list package List activityList = pm.queryIntentActivities(sharingIntent, 0); objShareIntentListAdapter = new ShareIntentListAdapter(CouponView.this,activityList.toArray()); // Create alert dialog box AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext()); builder.setTitle("Share via"); builder.setAdapter(objShareIntentListAdapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { ResolveInfo info = (ResolveInfo) objShareIntentListAdapter.getItem(item); // if email shared by user if(info.activityInfo.packageName.contains("Email") || info.activityInfo.packageName.contains("Gmail") || info.activityInfo.packageName.contains("Y! Mail")) { PullShare.makeRequestEmail(COUPONID,CouponType); } // start respective activity Intent intent = new Intent(android.content.Intent.ACTION_SEND); intent.setClassName(info.activityInfo.packageName, info.activityInfo.name); intent.setType("text/plain"); intent.putExtra(android.content.Intent.EXTRA_SUBJECT, ShortDesc+" from "+BusinessName); intent.putExtra(android.content.Intent.EXTRA_TEXT, ShortDesc+" "+shortURL); intent.putExtra(Intent.EXTRA_TITLE, ShortDesc+" "+shortURL); ((Activity)context).startActivity(intent); }// end onClick }); AlertDialog alert = builder.create(); alert.show(); 

Шаг 2. Теперь вы создали надувной плакат для вашего адаптера (ShareIntentListAdapter.java)

 package com.android; import android.app.Activity; import android.content.pm.ResolveInfo; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; public class ShareIntentListAdapter extends ArrayAdapter{ private final Activity context; Object[] items; public ShareIntentListAdapter(Activity context,Object[] items) { super(context, R.layout.social_share, items); this.context = context; this.items = items; }// end HomeListViewPrototype @Override public View getView(int position, View view, ViewGroup parent) { LayoutInflater inflater = context.getLayoutInflater(); View rowView = inflater.inflate(R.layout.social_share, null, true); // set share name TextView shareName = (TextView) rowView.findViewById(R.id.shareName); // Set share image ImageView imageShare = (ImageView) rowView.findViewById(R.id.shareImage); // set native name of App to share shareName.setText(((ResolveInfo)items[position]).activityInfo.applicationInfo.loadLabel(context.getPackageManager()).toString()); // share native image of the App to share imageShare.setImageDrawable(((ResolveInfo)items[position]).activityInfo.applicationInfo.loadIcon(context.getPackageManager())); return rowView; }// end getView }// end main onCreate 

Шаг 3: Создайте свой тип макета xml, чтобы отобразить представление списка в диалоговом окне (social_share.xml)

      // vKj 

Не уверен, что вы все еще ищете ответ, но ClickClickClack имеет пример реализации того, как вы можете перехватить намерение ACTION_SEND и выбрать основанный на имени пакета и некоторых характеристиках, что в конечном итоге происходит. В этом состоит большинство шагов, упомянутых Томиком.

http://clickclickclack.wordpress.com/2012/01/03/intercepting-androids-action_send-intents/

Одним из мощных аспектов этой реализации является добавление аналитики к вашим вызовам.

Использование Tomik great Answer Я могу создать свой собственный пользовательский общий список, используя PackageManager loadLabel и LoadIcon:

 public class MainActivity extends FragmentActivity { ArrayList icons; ArrayList labels; @Override protected void onCreate(Bundle arg0) { // TODO Auto-generated method stub super.onCreate(arg0); setContentView(R.layout.activity_main); icons=new ArrayList(); labels=new ArrayList(); PackageManager manager=getPackageManager(); Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); List activities=manager. queryIntentActivities(intent,0); for(int i=0;i 
  • Что такое намерение в Android?
  • Как получить список установленных приложений для Android и выбрать один для запуска
  • Проверьте, установлено ли приложение - Android
  • Отправка данных обратно в главную активность на Android
  • Что такое липкая трансляция?
  • Открыть приложение галереи с Android Intent
  • как я могу отправить данные из onPostExecute в AsyncTask?
  • Перечисление всех дополнительных компонентов
  • как я могу открыть календарь из своего приложения?
  • Android: BroadcastReceiver намерен обнаружить фотокамеру камеры?
  • Как проверить, может ли какое-либо намерение быть обработано из какой-либо деятельности?
  • Давайте будем гением компьютера.