Android中异常的处理

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.lang.Thread.UncaughtExceptionHandler;

import android.app.Application;
// 应用程序   配置到清单文件中 
public class MyApplication extends Application {
	// 程序最先执行的 
	@Override
	public void onCreate() {
		super.onCreate();
		// 程序运行首先调用
		System.out.println("Application");
		Thread.currentThread().setUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
	}
	//处理为捕获的异常 
	private class MyUncaughtExceptionHandler  implements UncaughtExceptionHandler{
		// 死后的遗言
		@Override
		public void uncaughtException(Thread thread, Throwable ex) {
			File file=new File("/mnt/sdcard/error.txt");
			PrintStream err=null;
			try {
				err = new PrintStream(file);
				ex.printStackTrace(err);// 把异常写到文件中 
				err.close();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}
		
			//  自杀的处理  首先杀死当前进程 然后重启下程序  回到报错的activity上一个界面 
			android.os.Process.killProcess(android.os.Process.myPid());
		}
		
	}


}


自杀比较容易,那么如何在自杀之后重启本程序呢?

/**
	 * 启动应用程序
	 */
	private void startApp() {
		// 遍历清单文件 找到 带有 main意图过滤器的Activity
		PackageManager manager=getPackageManager();
//		try {
//			//PackageInfo packageInfo = manager.getPackageInfo(appInfo.getPackageName(), 0);
//			man
//		} catch (NameNotFoundException e) {
//			e.printStackTrace();
//		}
		Intent launchIntentForPackage = manager.getLaunchIntentForPackage(appInfo.getPackageName());
		if(launchIntentForPackage!=null)
			startActivity(launchIntentForPackage);
		else
			Toast.makeText(getApplicationContext(), "关键服务不能直接启动", 0).show();
	}

appInfo是得到要启动的程序的包名,所以说,只要知道一个应用程序的包名,就可以通过这种方式来启动他。



再推荐几个比较常用的:

// 详细信息的功能
	private void detail() {
		Intent intent=new Intent("android.settings.APPLICATION_DETAILS_SETTINGS");
		intent.setData(Uri.parse("package:"+appInfo.getPackageName()));
		startActivity(intent);
	}

private void sharedApp() {
//        <intent-filter>
//        <action android:name="android.intent.action.SEND" />
//        <category android:name="android.intent.category.DEFAULT" />
//        <data android:mimeType="text/plain" />
//    </intent-filter>
		Intent intent=new Intent();
		intent.setAction("android.intent.action.SEND");
		intent.addCategory("android.intent.category.DEFAULT");
		intent.setType("text/plain");
		intent.putExtra(Intent.EXTRA_TEXT, "推荐您一款应用程序"+appInfo.getName()+"下载地址 goole市场");
		startActivity(intent);
		
		//  微信 微博 空间  陌陌
	}

private void uninistallApp() {
		// <intent-filter>
		// <action android:name="android.intent.action.VIEW" />
		// <action android:name="android.intent.action.DELETE" />
		// <category android:name="android.intent.category.DEFAULT" />
		// <data android:scheme="package" />
		// </intent-filter>
		if (appInfo.isUser()) {
			if(appInfo.getPackageName().equals(getPackageName())){
				Toast.makeText(getApplicationContext(), "休想卸载当前软件!!!!", 0).show();
				return ;
			}
			Intent intent = new Intent("android.intent.action.DELETE");
			intent.addCategory("android.intent.category.DEFAULT");
			intent.setData(Uri.parse("package:" + appInfo.getPackageName()));
			startActivityForResult(intent, 0);
		} else {
			Toast.makeText(getApplicationContext(), "系统程序需要root权限才可以卸载", 0)
					.show();
		}
		// userInfos.remove(appInfo);

	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值