Android 用Launcher启动应用的方式


在做展讯平台的时候遇到四叶草锁屏,下滑可以快速进入拍照应用,经调试发现每次打开都是新的activity,并没有还原之前锁屏之前相机的状态,通过代码跟踪和调试发现,与Intent设置启动参数有关,改动点见文中fix begin和fix end 标志:

public void onTrigger(View v,  Intent intent) {

 if(mCallback!=null) {
  Log.d("cara","onTrigger mCallback="+mCallback);
          mCallback.pokeWakelock();
 
  mStatus1.setVisibility(View.GONE);
  mStatus2.setVisibility(View.GONE);
  mDragHint.setVisibility(View.VISIBLE);

  mIntent = null;
  if(intent != null){
   mIntent = new Intent(intent);
   //fix begin
   mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
   mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
   //fix end
   mContext.startActivity(mIntent);
   }

       
  mHandler.postDelayed(new Runnable() {
   public void run() {
    if(mCallback!= null)
     mCallback.goToUnlockScreen();
   
   }
  }, 250);         
  }
 }

onTrigger函数是每次滑动到屏幕到一个解锁位置(比如滑动到相机应用或者滑动到解锁点的时候)会触发这个函数

Intent设置这样的参数后就相当于从Launcher里面进入应用了,可以完美的还原相机应用之前的状态。

相关内容