2012-01-10 4 views
1

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

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

Uri uri = Uri.parse("file:///sdcard/"); 
Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setData(uri); 
intent.setType("application/pdf"); 
startActivity(intent); 
return true; 

Спасибо, ребята. Я пробовал этот код, но он сказал, что документ не может быть открыт.

ответ

0

Если точное применение менее важна, и вам просто нужно что-то, что будет отображать контент, вам также может полностью опустить имя компонента. Просто установите действие, данные и (необязательно) тип на намерение и дайте ОС выполнить работу.

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setData(/*your data uri*/); 
intent.setType(/*your data's MIME type*/); 
startActivity(intent); 

Это намерение будет обработано приложением, зарегистрированным для намерений с действием вида и соответствующим типом MIME. Это неявное намерение, как упоминал Адил.

+0

У меня есть приложение под названием printershare, которое мне нужно открыть из моего приложения. Можете ли вы предоставить мне uri, чтобы открыть это ??? Я думаю, что я упускаю правильный URI. – Khush

+0

Если это приложение, которое вы не писали, вы должны проверить документацию на принтеры. Невозможно угадать имена пакетов или классов. В общем, вы, вероятно, не можете предположить, что установлен принтер printershare. – dokkaebi

1

Здесь вызов Enjoy кодирования ....

Intent res = new Intent(); 
    String mPackage = "com.ReachOut"; 
    String mClass = ".splash1"; 
    res.setComponent(new ComponentName(mPackage,mPackage+mClass)); 
    startActivity(res); 
+0

«Что я не понимаю, у меня нет имени класса для приложения, которое я хочу назвать», - говорит автор. Таким образом, он/она не может действительно наслаждаться кодированием с этим! –

+0

ok, u знаете, какое другое приложение? –

3

Вам нужно будет позвонить Implicit Intents

Из документации:

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

Эти намерения могут быть вызваны предоставления каких-либо действий , типа или категории информация

Например вы хотите открыть браузер Activity и вы не знаете имя класса, который вы Activity будет использовать примерно следующее:

Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); 
startActivity(in); 

Другой пример: вы не знаете Gallery Activity класс, вы будете называть его с помощью Implicit Intent так:

Intent intent = new Intent(); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE); 
Смежные вопросы