0

Я прочитал documentation о получении простых данных. Я хочу получить URL-адрес, т. Е. text/plain из других приложений.Получение данных из других приложений - android

Итак, я объявил только этот пристальный фильтр:

<intent-filter> 
     <action android:name="android.intent.action.SEND" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <data android:mimeType="text/plain" /> 
    </intent-filter> 

В моих MainActivity.class:

void onCreate (Bundle savedInstanceState) { 
    ... 
// Get intent, action and MIME type 

     Intent intent = getIntent(); 
     String action = intent.getAction(); 
     String type = intent.getType(); 

     if (Intent.ACTION_SEND.equals(action) && type != null) { 
      if ("text/plain".equals(type)) { 
       handleSendText(intent); // Handle text being sent 
      } 
     } 
} 

Я обработки полученный текст:

void handleSendText(Intent intent) { 
     String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT); 
     if (sharedText != null) { 
      // Update UI to reflect text being shared 
      textBox.setText(sharedText); 
     } 
    } 

Но, docum что я должен тщательно обрабатывать типы MIME других типов.

1) Но, так как я только зарегистрирован для обычного/текстового кода, мне нужен код обработки типа больше?

2) Кроме того, ссылаясь на документы:

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

MainActivity.java также запускается LAUNCHER. Как мне это обработать?

3) Как только пользователь выбирает мое приложение из диалога, открывает ли он это приложение во всех случаях? Мне не нужно открывать приложение. Могу ли я обойти это?

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

enter image description here

+0

'нужен ли мне код обработки типов?'. Ну, ты именно это узнаешь. В каких сценариях теперь запускается ваше приложение для типов, которые вы не обрабатываете? – greenapps

+0

Поскольку мое приложение зарегистрировано только для «text/plain» в фильтре намерений, мое приложение не отображается, когда пользователь хочет поделиться другими типами изображений. Итак, мне все еще нужно это обработать? – Nikhil

+1

Если ваше приложение не отображается. Поэтому не запускается. Тогда о чем вы беспокоитесь? Если вы беспокоитесь, просто покажите Toast(), говоря, что вам жаль. – greenapps

ответ

1

1. Да, вам нужно добавить mimeType с для всех типов файлов, которые вы хотите поделиться.

2. Я думаю, что проблема может быть, что начиная Activity также будет иметь

<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" />. 

в явной декларации. Поэтому, когда вы позвоните по телефону

intent.getAction() 

какое действие возвращается ?? ACTION_SEND или MAIN? Думаю, это проблема, о которой они говорят.

3. Если вы не хотите, чтобы ваше приложение, которое будет отображаться в списке акций приложений, то почему вы добавили действие

<action android:name="android.intent.action.SEND" /> 

к этому Activity в манифесте, в первую очередь ?? Поскольку целью добавления действия в фильтр-намерение является то, что Activity или Service или BroadcastReceiver могут быть запущены из другого приложения, отправив неявное намерение.И если вы не хотите, чтобы это произошло, тогда как вы планируете «делиться текстом»?

+0

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

+0

Хорошо, могу ли я зарегистрировать этот фильтр намерений в манифесте для службы, в отличие от активности. Итак, я могу избежать отображения пользовательского интерфейса. – Nikhil

+0

ну тогда он запустит «Сервис». Это то, что вы хотите ? Что вы планируете делать? –

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