Форум программистов, компьютерный форум CyberForum.ru

Поймать UncaughtExceptions и запустить ErrorActivity - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Выключение экрана по нажатию кнопки http://www.cyberforum.ru/android-dev/thread1811202.html
Необходимо выключить экран по нажатию кнопки. Пробовал KeyguardManager, но метод KeyguardLock зачеркивается в android studio. Пробовал DevicePolicyManager, но метод .lockNow() привел к аварийном завершению программы. И еще много чего... Короче говоря, помогите чем может....
Программирование Android Передача объекта обратно в главный поток из другого потока Добрый день. У меня ест фрагмент в котором я запускаю новый поток, после этого я хочу вернуть объект из этого потока в главный поток, как это лучше сделать? public class IFragment extends Fragment { private void getRecentlyTag(){ new Thread(){ @Override public void run() { http://www.cyberforum.ru/android-dev/thread1811171.html
Операции с фрагментами Программирование Android
Если вызвать транзакцию remove для текущего фрагмента в контейнере. То вызовется ли у этого фрагмента метод onDestroy? Добавлено через 1 минуту Если вызвать replace то у текущего фрагмента в контейнере вызовется onDestroy а у нового при добавлении onCreate и остальные методы по порядку так? Добавлено через 1 минуту А если я добавил транзакцию в BackStack то при вызове popBackStack у меня...
Взаимодействие базы данных на SQLlite и Фрагмента и RecyclerView Программирование Android
Доброго времени суток. Суть проблемы в следующем: есть база с некоторым набором данных, есть фрагмент, куда внедрен RecyclerView для их отображения. Подтянуть данные из таблицы при загрузке - никаких проблем. Но как правильнее сделать обновление (вероятнее всего RecyclerView) при добавлении и удалении данных?
Программирование Android Запуск приложений с Vulkan API на Андроид http://www.cyberforum.ru/android-dev/thread1811043.html
Доброго времени суток, форумчане! С выходом нового графического API Vulkan компания Samsung продемонстрировала работу демки Protostar на своём флагманском Galaxy S7, и побещали поддержку нового интерфейса для 6-й версии андроида. Хотя его должны сделать доступным только в 7-й. На Github'е можно найти некоторые примеры программ с исходниками, всё вроде нормально собирается, но на устройстве при...
Программирование Android Как вытащить файл из эмулятора? Сгенерировал в приложении и вроде даже записал файл wav. Теперь не знаю, как его вытащить для анализа. На телефоне без рута папки приложения не видно. А на эмуляторе подозреваю, что всё лежит в img архивах или образах. Alkogol с этим не хочет работать. Виндовс предлагает записать на DWD. Чем распаковать img из эмулятора? А может в самом Студио что то встроено для этого? подробнее

Показать сообщение отдельно
vxg
Модератор
3120 / 1922 / 208
Регистрация: 13.01.2012
Сообщений: 7,362
23.09.2016, 22:04     Поймать UncaughtExceptions и запустить ErrorActivity
AlexV1, так работает
MainActivity
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.example.et;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        ((Button)findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                int i = Integer.parseInt("23,222.345");
            }
        });
    }
 
}

ErrorActivity
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.example.et;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
 
public class ErrorActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_error);
    }
 
}

App
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.example.et;
 
import android.app.Application;
import android.content.Intent;
 
public class App extends Application {
    @Override
    public void onCreate() {
        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
            @Override
            public void uncaughtException(Thread thread, Throwable e) {
                Intent i = new Intent();
                i.setClassName("com.example.et", "com.example.et.ErrorActivity");
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(i);
                
                System.exit(1);
            }
        });
 
        super.onCreate();
    }
 
}

Manifest
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.et"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:name="App" >
        <activity
            android:name="com.example.et.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.et.ErrorActivity"
            android:label="@string/app_name" >
        </activity>
    </application>
 
</manifest>

принципиальных отличий от вашего кода никаких кроме убийства после запуска активити с сообщением об ошибке
причина по которой активити не хотело показываться скорее всего в этом
You're not seeing anything because the exception happened on your UI thread and the stack unrolled all the way.
убийство скорее всего развязывает этот узел и дает активити с сообщением об ошибке стартовать
кроме того в некоторых источниках советуют добавить к активити с сообщением об ошибке в манифест вот такую магию
XML
1
android:process=":report_process"
You can add attribute android: process=":report_process" to the <activity> element which refers to your bug report activity in AndroidManifest.xml.

By default, activities belong to the same appliction would run in the same process identified by your package name. By setting android: process attribute, you can override this. android: process starting with : refers to a private identifier within your package, so that you can start the activity in a new process without conflicting other packages' process.
с этой магией активити с сообщением об ошибке стартует даже без убийства, но нажатие кнопки назад в этом случае возвращало меня на мертвую активити вызвавшую исключение
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru