先把该有的权限全部写上
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
新建CrashHandler类
import android.content.Context;
import android.os.Environment;
import android.os.Looper;
import android.widget.Toast;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* <p>文件描述:<p>
* <p>作者:JYB<p>
* <p>创建时间:2019/3/1<p>
* <p>更改时间:2019/3/1<p>
* <p>版本号:1<p>
*/
public class CrashHandler implements Thread.UncaughtExceptionHandler {
private static CrashHandler sInstance = null;
private Context mContext;
private CrashHandler() {
}
public void init(Context context) {
mContext = context;
// 将此类设为默认异常处理器
Thread.setDefaultUncaughtExceptionHandler(this);
}
//单例模式
public static CrashHandler getInstance() {
if (sInstance == null) {
synchronized (CrashHandler.class) {
if (sInstance == null) {
synchronized (CrashHandler.class) {
sInstance = new CrashHandler();
}
}
}
}
return sInstance;
}
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
new Thread() {// 在主线程中弹出提示
@Override
public void run() {
Looper.prepare();
Toast.makeText(mContext, "捕获到异常", Toast.LENGTH_SHORT).show();
Looper.loop();
}
}.start();
String exceptionMessge = throwable.getMessage();
String path = Environment.getExternalStorageDirectory()+ "/" + "carshhhhhhh";
File file = new File(path);
if(!file.exists()){
file.mkdir();
}
File file1 = new File(file , "error.log");
try {
FileOutputStream outputStream = new FileOutputStream(file1);
byte[] buffer = exceptionMessge.getBytes();
outputStream.write(buffer , 0 ,buffer.length);
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
}
}
}
创建一个App包继承Application
import android.app.Application;
/**
* <p>文件描述:<p>
* <p>作者:JYB<p>
* <p>创建时间:2019/3/1<p>
* <p>更改时间:2019/3/1<p>
* <p>版本号:1<p>
*/
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//调用CrashHandler类不的方法
CrashHandler.getInstance().init(this);
}
}
在主页面设置一个按钮点击事件
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.bt);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView.setText("");
}
});
}
}