2013-10-10 2 views
0

Я назвал свой пользовательские приложения из браузера с помощью «customapp: // myactivity»Как запустить приложение из веб-браузера (не просто активность)

Это работает хорошо, но когда я запускаю мое приложение. Он работает как два разных приложения.

Я думаю, что браузер запустил только «myactivity» вместо «customapp».

Я думаю, что если я начну «customapp» на «myactivity», тогда я могу делать то, что хочу, но я думаю, что это смешно.

Есть ли классный способ решить эту проблему?

  • Больше объяснений на ниже

экс) Если я запускаю «customapp» и начать «myactivity» и назвать свой собственный приложение из веб-браузера с помощью «customapp: // myactivity» и нажмите кнопку домой долго, в приложениях есть «customapp», хотя я в «myactivity». Если я запустил другое приложение и долгое время нажимаю кнопку «Домой», есть две «myactivity». Один из «customapp» и один из веб-браузера.

Значок и имя приложения - это веб-браузер, но есть «myactivity».

Извините за плохой английский.

ответ

0

Я только что решил свою проблему.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (getIntent().getAction().equals(Intent.ACTION_VIEW)) { 
     Intent intent = getPackageManager().getLaunchIntentForPackage("com.company.app"); 
     intent.setData(getIntent().getData()); 
     intent.putExtras(getIntent().getExtras()); 
     startActivity(intent); 
     finish(); 
     return; 
    } 

    // do something 
} 
-1

Пожалуйста, НЕ используйте свою собственную схему! Схемы URI представляют собой глобальное пространство имен в сети. У вас есть схема «anton:» по всему миру? Нет? Тогда НЕ используйте его.

Один из вариантов - иметь веб-сайт и иметь фильтр намерений для определенного URI на этом веб-сайте. Например, это то, что делает рынок, чтобы перехватить URI, на своем веб-сайте:

<intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <data android:scheme="http" android:host="market.android.com" 
       android:path="/search" /> 
     </intent-filter> 

С другой стороны, есть «намерение:» схема. Это позволяет вам описать практически любое намерение как URI, которое браузер попытается запустить при нажатии. Чтобы построить такую ​​схему, лучший способ - просто написать код для создания намерения, который вы хотите запустить, а затем распечатать результат намерения.toUri (Intent.URI_INTENT_SCHEME).

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

Лучший способ использовать это, если вы хотите, чтобы он запускал только ваше приложение, связано с вашим собственным действием с областью действия и с использованием Intent.setPackage(), чтобы сказать, что намерение будет соответствовать вашему приложению.

Компромиссы между ними:

  • HTTP URI, требуют у вас есть домен вы владеете. Пользователь всегда будет получать вариант отображения URI в браузере. У него очень хорошие свойства , где, если ваше приложение не установлено, они просто приземлится на вашем веб-сайте.

  • Устройства URI требуют, чтобы ваше приложение уже было установлено и только на телефонах Android. Разрешить почти любые намерения (но всегда имеют категорию BROWSABLE, включенную и не поддерживающую явные компоненты). Они позволяют вам запускать запуск только в ваше приложение без пользователя , имея возможность вместо этого переходить в браузер или любое другое приложение.

+0

Спасибо. Итак, вы начинаете работу с Intent.setPackage() в myActivity? Поток будет Веб-браузер -> myActivity в веб-браузере -> myActivity в customApp. это правильно? – Mid

+0

Можно ли использовать имя пакета для схемы? нравится com.company.packagename: // myActivity. У меня есть домен company.com. – Mid

+0

минус один для копирования ответа от @hackbod (http://stackoverflow.com/a/3472228/472262) и даже не подгоняет вопрос «У вас есть» «anton:« схема во всем мире »на вопрос – Makibo

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