Не найдено действий для обработки намерения с http в URL-адресе

Я искал, искал и искал в течение нескольких часов и не могу найти решение, которое имело бы смысл для моей проблемы. Я просто пытаюсь открыть веб-страницу из своего приложения для Android. Должно быть просто, но я продолжаю получать ошибку «Нет активности», и приложение вылетает. Мой код очень прост для этого...

О деятельности

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_about);
  Button appsButton = findViewById(R.id.about_button);
  appsButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
      Intent intent = new Intent(Intent.ACTION_VIEW);
      intent.setData(Uri.parse(Keys.MARKET_LINK));
      intent.setPackage(getPackageName());
      startActivity(intent);
    }
  });
}

в моем классе ключей...

public static final String MARKET_LINK = "https://play.google.com/store/apps/dev?id=<MY ID>";

Каждый раз, когда я нажимаю "aboutButton" в приложении, я получаю сообщение об ошибке...

android.content.ActivityNotFoundException: не найдено действий для обработки Intent {act=android.intent.action.VIEW dat=https://play.google.com/...

Все, что я нашел в Интернете, говорит одно и то же... Ваш URL-адрес не содержит части «http://», поэтому он не работает, но вы можете видеть, что мой URL-адрес содержит часть «https://» URL. Это полный URL-адрес, я могу ввести его в окно браузера, и страница открывается отлично. Я не понимаю, как у него не может быть активности для обработки Intent.ACTION_VIEW. Я понятия не имею, куда идти сейчас, так как все в Интернете говорят, что добавьте «http://» к URL-адресу, и он будет работать, но это не так. Кроме того, у меня есть

<uses-permission android:name="android.permission.INTERNET />

в моем файле манифеста. Любая помощь будет оценена по достоинству, это сводит меня с ума. Спасибо


person Neglected Sanity    schedule 29.08.2018    source источник
comment
Вам не нужно разрешение в Интернете для запуска других приложений, даже если они отвечают на URL-адреса.   -  person zapl    schedule 29.08.2018


Ответы (1)


Вы ориентируетесь на определенный пакет с помощью

intent.setPackage(getPackageName());

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

person Zachary Sweigart    schedule 29.08.2018
comment
Красивый! Спасибо. Я получил этот фрагмент со страницы разработчика Android о том, как запустить магазин игр со ссылкой на ваше приложение или страницу разработчика. - person Neglected Sanity; 30.08.2018