android.util.AndroidRuntimeException: вызов startActivity () извне действия - PullRequest
0 голосов
/ 01 июня 2018

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

 share.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            String shareBody = "\t\t DIL KI BAAT \n\n" +sayari[position].toString().trim()+"\n\n\n"+ "https://play.google.com/store/apps/details?id="
                    + appPackageName;

            Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
            sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            sharingIntent.setType("text/plain");
            sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
            context.startActivity(Intent.createChooser(sharingIntent, context.getResources()
                    .getString(R.string.app_name)));
        }
    });

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

Вам необходимо добавить этот флаг не для намерения совместного использования, а для намерения, с которого вы начинаете деятельность:

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);

Intent startIntent = Intent.createChooser(sharingIntent, context.getResources().getString(R.string.app_name));
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startIntent);
0 голосов
/ 01 июня 2018

Лучший способ избавиться от этой проблемы - запустить действие с родительского действия адаптера.Либо используйте объект контекста, либо используйте интерфейс, передавайте их в качестве параметра конструктору адаптера.Вызовите метод в вашей деятельности, используя переданную ссылку.Вот пример:

Создайте интерфейс:

public interface ActivityInteractor{
    public void showDetails();
}

Позвольте вашей активности его реализовать:

public class MyActivity extends Activity implements ActivityInteractor{
    public void showDetails(){
        //do stuff
    }
}

Затем передайте свою активность ListAdater:

public MyAdapter расширяет BaseAdater {private ActivityInteractor слушатель;

public MyAdapter(ActivityInteractor listener){
    this.listener = listener;
}

} И где-то в адаптере, когда вам нужно вызвать этот метод Activity:

listener.showDetails();
0 голосов
/ 01 июня 2018

Сделайте это перед вызовом startActivity

sharingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);. Если вы не используете контекст действия, это необходимо.

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