Add support for launching activities when attaching to a car or desk dock.

Categories CATEGORY_CAR_DOCK and CATEGORY_DESK_DOCK can be assigned to
activities to make them launchable on docked events.
This is a better mechanism than listening for ACTION_DOCK_EVENT with a broadcast receiver.

Change-Id: Ic5f3ab3555ce02ca922bc31ebba41978cefe8bda
Signed-off-by: Mike Lockwood <lockwood@android.com>
This commit is contained in:
Mike Lockwood
2009-09-16 13:01:32 -04:00
parent 764916d01b
commit 9092ab4d45
3 changed files with 122 additions and 5 deletions

View File

@@ -16,6 +16,7 @@
package com.android.server;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
@@ -111,6 +112,30 @@ class DockObserver extends UEventObserver {
Intent intent = new Intent(Intent.ACTION_DOCK_EVENT);
intent.putExtra(Intent.EXTRA_DOCK_STATE, mDockState);
mContext.sendStickyBroadcast(intent);
// Launch a dock activity
String category;
switch (mDockState) {
case Intent.EXTRA_DOCK_STATE_CAR:
category = Intent.CATEGORY_CAR_DOCK;
break;
case Intent.EXTRA_DOCK_STATE_DESK:
category = Intent.CATEGORY_DESK_DOCK;
break;
default:
category = null;
break;
}
if (category != null) {
intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(category);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
mContext.startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.w(TAG, e.getCause());
}
}
}
}
};