2012-04-17 4 views
2

Мне нужно разрешить пользователю рисовать/рисовать/рисовать что-то. Уже существует множество приложений (например, Skitch, я буду использовать это в качестве примера), которые выполняют эту задачу. Поэтому я не хочу изобретать колесо.
В Android, теоретически, мы можем запускать другую деятельность по намерениям. Это похоже на «трубу» в Unix.
Проблема в том, что я не знаю, как получить информацию для запуска Skitch.
Чтобы интегрировать Skitch в мое приложение, мне нужно знать действие, которое оно поддерживает, возвращающее намерение (если оно есть), когда оно заканчивается.Как найти информацию для запуска другого приложения?

Я установил Skitch, photoshop, а также множество других приложений с сенсорным рисования в моем устройстве, но этот код не работает:

Uri data = Uri.fromFile(file); 
Intent i = new Intent(Intent.ACTION_EDIT); 
i.setData(data); 
i.setType("image/*");        
startActivityForResult(i, ACTIVITY_DRAW); 

Я могу запустить Skitch из моего приложения следующим образом: но, очевидно, Я не могу получить возвращенный результат таким образом (код от here).

Intent i = new Intent(Intent.ACTION_MAIN); 
PackageManager manager = getPackageManager(); 
i = manager.getLaunchIntentForPackage("com.evernote.skitch"); 
i.addCategory(Intent.CATEGORY_LAUNCHER); 
startActivity(i); 

Мой вопрос: существует ли стандартный способ поиска информации для запуска стороннего приложения?
Есть this site единственный способ поделиться/получить такую ​​информацию?
Или если у вас есть предложения по моей проблеме, пожалуйста, помогите мне.
Спасибо!

+2

Возможно, вам придется поговорить напрямую с людьми Skitch. –

+0

Спасибо, я сделаю это. –

ответ

3

Как вы уже знаете, как вызвать активность приложения из приложения ..этот путь Mentioned Here.

Intent intent = new Intent(Intent.ACTION_RUN); 
intent.setComponent(new ComponentName("<packet name>", "<class name>")); 
List list = packageManager.queryIntentActivities(intent, packageManager.COMPONENT_ENABLED_STATE_DEFAULT); 

if(list.size() > 0) 
{ 
Log.i("Log", "Have application" + list.size()); 
startActivity(intent); 
} 
else 
{ 
    Log.i("Log", "None application"); 
} 

Все ваши требуют, в основном, две вещи, чтобы позвонить любой деятельности,

1) Пакет Название этого вида деятельности 2) Класс деятельности Наименование

Эти две информации могут быть доступны только в том случае, если они являются открытыми или бесплатными для использования .. как Zxing , Приложение Google Maps.

Существует еще один способ, чтобы начать деятельность приложений, как,

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_CALL); 
intent.setData(Uri.parse("tel:" + numberField.getText())); // set the Uri 
startActivity(intent); 

Для этого способа использования необходимо знать правильное действие для деятельности вы хотите позвонить, и правильный параметр, чтобы пройти с.

И снова эта информация может быть доступна только в том случае, если они являются открытыми или бесплатными для использования. Подобно приложениям Facebook и Gmail для публикации и публикации сообщений.

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

+0

Спасибо за вашу помощь Франкенштейн! Я решаю связаться с Skitch (и, возможно, с другой командой), чтобы узнать, могут ли они предоставить такую ​​информацию. –

0

Это старый вопрос, но, возможно, это может помочь кому-то узнать, что приложение AppXplore от Sony (бесплатно) показывает пакет и имя деятельности каждого приложения, установленного на вашем устройстве, поэтому вы можете в конечном итоге использовать их для выполнения явных намерений.

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