一、启动另一个APP

代码比较简单,直接贴上:

     try {            PackageManager packageManager = getActivity().getPackageManager();            Intent intent=new Intent();            intent = packageManager.getLaunchIntentForPackage("com.maiji.textviewchangedemo"); //这里参数就是你要打开的app的包名            startActivity(intent);        } catch (Exception e) {            Log.e("打开另外一个应用出错",e.getMessage());   //未打开,可能要打开的app没有安装,需要再此进行处理        }

2、重启本APP

a. 使用 FLAG_ACTIVITY_CLEAR_TOP :

 Intent intent = getBaseContext().getPackageManager()                        .getLaunchIntentForPackage(getBaseContext().getPackageName());                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                startActivity(intent);

b. 使用 AlarmManager :

        Intent intent = getBaseContext().getPackageManager()                .getLaunchIntentForPackage(getBaseContext().getPackageName());        PendingIntent restartIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_ONE_SHOT);        AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);        mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent); // 1秒钟后重启应用        System.exit(0);

c. 开启一个Service,然后自己杀死APP的进程,最后在Service里通过包名来启动一个APP并销毁Service

/** * 此工具类用来重启APP,只是单纯的重启,不做任何处理。 * Created by 13itch on 2016/8/5. */public class RestartAPPTool {    /**     * 重启整个APP     * @param context     * @param Delayed 延迟多少毫秒     */    public static void restartAPP(Context context,long Delayed){        /**开启一个新的服务,用来重启本APP*/        Intent intent1=new Intent(context,killSelfService.class);        intent1.putExtra("PackageName",context.getPackageName());        intent1.putExtra("Delayed",Delayed);        context.startService(intent1);        /**杀死整个进程**/        android.os.Process.killProcess(android.os.Process.myPid());    }    /***重启整个APP*/    public static void restartAPP(Context context){        restartAPP(context,2000);    }}
/*** * 该服务只用来让APP重启,生命周期也仅仅是只是重启APP。重启完即自我杀死 */public class killSelfService extends Service {    /**关闭应用后多久重新启动*/    private static  long stopDelayed=2000;    private Handler handler;    private String PackageName;    public killSelfService() {        handler=new Handler();    }    @Override    public int onStartCommand(final Intent intent, int flags, int startId) {        stopDelayed=intent.getLongExtra("Delayed",2000);        PackageName=intent.getStringExtra("PackageName");        handler.postDelayed(()->{                Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(PackageName);                startActivity(LaunchIntent);                killSelfService.this.stopSelf();        },stopDelayed);        return super.onStartCommand(intent, flags, startId);    }    @Override    public IBinder onBind(Intent intent) {       return null;    }}

最后别忘了,在AndroidManifest.xml文件中去注册Service

 <service      android:name=".killSelfService" />

更多相关文章

  1. Android 获得当前进程PackageName
  2. 穿针引线,帮你回忆, 汇总:Android系统启动流程 & 应用程序'进程'启
  3. android 查看其他进程内存数据
  4. Android 消息机制 进程调度问题
  5. Android进程间通信(IPC)
  6. android笔记 AIDL 实现进程间通信
  7. Android AIDL 实现两个APP之间的跨进程通信实例
  8. Android kill app Process 结束进程代码
  9. 跨进程共享 SharedPreferences

随机推荐

  1. 不需要任何权限获得Android设备的唯一ID
  2. Android(安卓)Canvas绘制直方图
  3. android 中文乱码问题
  4. Android 使用Loader示例
  5. Android Gson的使用
  6. android之图文混排
  7. Android之布局
  8. Android切换语言
  9. android中的selector背景选择器
  10. Android(安卓)SurfaceView使用dirty rect