提交 72cfc2a0 编写于 作者: A Adam Barth

SkyDemo should launch demos in their own windows

R=eseidel@chromium.org, eseidel@google.com

Review URL: https://codereview.chromium.org/1214633008 .
上级 515c055c
......@@ -10,7 +10,12 @@
<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />
<application android:icon="@mipmap/ic_launcher" android:label="Sky" android:name="SkyDemoApplication">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize" android:hardwareAccelerated="true" android:name="SkyDemoActivity" android:theme="@android:style/Theme.Holo.Light.NoActionBar">
<activity android:name="SkyDemoActivity"
android:launchMode="standard"
android:documentLaunchMode="always"
android:hardwareAccelerated="true"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize"
android:theme="@android:style/Theme.Holo.Light.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
......
......@@ -5,6 +5,7 @@
import 'dart:sky';
import 'package:mojom/intents/intents.mojom.dart';
import 'package:sky/mojo/activity.dart' as activity;
import 'package:sky/mojo/asset_bundle.dart';
import 'package:sky/mojo/shell.dart' as shell;
import 'package:sky/painting/box_painter.dart';
......@@ -38,6 +39,7 @@ void launch(String relativeUrl, String bundle) {
Intent intent = new Intent()
..action = 'android.intent.action.VIEW'
..component = component
..flags = activity.MULTIPLE_TASK | activity.NEW_DOCUMENT
..url = url.toString();
if (bundle != null) {
......@@ -47,8 +49,7 @@ void launch(String relativeUrl, String bundle) {
intent.stringExtras = [extra];
}
shell.requestService(null, activityManager);
activityManager.ptr.startActivity(intent);
activity.startActivity(intent);
}
class SkyDemo {
......
......@@ -5,8 +5,22 @@
import 'package:mojom/intents/intents.mojom.dart';
import 'package:sky/mojo/shell.dart' as shell;
const int NEW_DOCUMENT = 0x00080000;
const int NEW_TASK = 0x10000000;
const int MULTIPLE_TASK = 0x08000000;
ActivityManagerProxy _initActivityManager() {
ActivityManagerProxy activityManager = new ActivityManagerProxy.unbound();
shell.requestService('mojo:sky_viewer', activityManager);
return activityManager;
}
final ActivityManagerProxy _activityManager = _initActivityManager();
void finishCurrentActivity() {
ActivityManagerProxy activityManager = new ActivityManagerProxy.unbound();
shell.requestService('mojo:sky_viewer', activityManager);
activityManager.ptr.finishCurrentActivity();
}
\ No newline at end of file
_activityManager.ptr.finishCurrentActivity();
}
void startActivity(Intent intent) {
_activityManager.ptr.startActivity(intent);
}
......@@ -17,6 +17,7 @@ struct ComponentName {
struct Intent {
string action;
string url;
uint32 flags;
ComponentName? component;
array<StringExtra>? string_extras;
};
......
......@@ -40,6 +40,11 @@ public class ActivityManagerImpl implements ActivityManager {
@Override
public void startActivity(Intent intent) {
if (sCurrentActivity == null) {
Log.e(TAG, "Unable to startActivity");
return;
}
final android.content.Intent androidIntent = new android.content.Intent(
intent.action, Uri.parse(intent.url));
......@@ -56,10 +61,12 @@ public class ActivityManagerImpl implements ActivityManager {
}
}
androidIntent.addFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
if (intent.flags != 0) {
androidIntent.setFlags(intent.flags);
}
try {
mContext.startActivity(androidIntent);
sCurrentActivity.startActivity(androidIntent);
} catch (ActivityNotFoundException e) {
Log.e(TAG, "Unable to startActivity", e);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册