Android 隱藏和啟動程序

openkk 12年前發布 | 37K 次閱讀 Android Android開發 移動開發

 由于我的項目中有需要后臺運行的程序。所以想做個類似QQ手機那類的東西。隱藏主程序,并在點擊狀態欄圖標后再次恢復到之前的頁面上。

 

下面單位是監聽返回按鈕,用于隱藏主程序

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event){
     if (keyCode == KeyEvent.KEYCODE_BACK) {
      AlertDialog.OnClickListener lsn = new AlertDialog.OnClickListener() {

         @Override
         public void onClick(DialogInterface dialog, int which) {
         // TODO Auto-generated method stub
             if (which == DialogInterface.BUTTON_NEGATIVE)
             {
                return;
             }
             if (false) {
              //dealCopyingOnExit();
             } else {
                showNotification(R.drawable.logo_2,"圖片旁邊的文字","XXXX","內容");

                Intent i= new Intent(Intent.ACTION_MAIN); 
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
                i.addCategory(Intent.CATEGORY_HOME); 
                startActivity(i);  

             }
         }
       };

      new AlertDialog.Builder(this).setMessage(getString(R.string.sure_exit))
       .setPositiveButton("\t隱藏\t", lsn).setNegativeButton("\t取消 \t", lsn)
        .create().show();

      return true;
     }
     return super.onKeyDown(keyCode, event);
    }
創建一個通知
public void showNotification(int icon,String tickertext,String title,String content){
        //Notification管理器
        nm= (NotificationManager)getSystemService(NOTIFICATION_SERVICE);


        Notification notification=new Notification(icon,tickertext,System.currentTimeMillis());
        //后面的參數分別是顯示在頂部通知欄的小圖標,小圖標旁的文字(短暫顯示,自動消失)系統當前時間(不明白這個有什么用)
        //notification.defaults=Notification.DEFAULT_VIBRATE;
        //這是設置通知是否同時播放聲音或振動,聲音為Notification.DEFAULT_SOUND
        //振動為Notification.DEFAULT_VIBRATE;
        //Light為Notification.DEFAULT_LIGHTS,在我的Milestone上好像沒什么反應
        //全部為Notification.DEFAULT_ALL
        //如果是振動或者全部,必須在AndroidManifest.xml加入振動權限


        PendingIntent pt=PendingIntent.getActivity(this, 0 , new Intent(this,VncesMain.class), 0);
        //點擊通知后的動作,這里是轉回main 這個Acticity
        notification.setLatestEventInfo(this,title,content,pt);

         nm.notify(notification_id, notification);

    }
最重要的來了。如果你不加下面這一句,你點擊狀態欄小圖片時,他會重新創建一個程序。

AndroidManifest.xml 文檔里面的主 activity 上加入

android:launchMode="singleTask"

singleTask:顧名思義就是堆棧中只保留一個Activity
如果桌面Activity設置了singleTask,下次再啟動應用時,其他Activity都從堆棧中清除,只留下主界面的Activity,所有再次啟動后打開的是主界面的Activity

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!