27 implements PluginRegistry,
28 PluginRegistry.RequestPermissionsResultListener,
29 PluginRegistry.ActivityResultListener,
30 PluginRegistry.NewIntentListener,
31 PluginRegistry.WindowFocusChangedListener,
32 PluginRegistry.UserLeaveHintListener,
33 PluginRegistry.ViewDestroyListener {
34 private static final String TAG =
"FlutterPluginRegistry";
36 private Activity mActivity;
38 private FlutterNativeView mNativeView;
41 private final PlatformViewsController mPlatformViewsController;
42 private final Map<String, Object> mPluginMap =
new LinkedHashMap<>(0);
52 mNativeView = nativeView;
53 mAppContext = context;
54 mPlatformViewsController =
new PlatformViewsController();
59 mAppContext = context;
60 mPlatformViewsController =
new PlatformViewsController();
65 return mPluginMap.containsKey(
key);
69 @SuppressWarnings(
"unchecked")
71 return (
T) mPluginMap.get(pluginKey);
76 if (mPluginMap.containsKey(pluginKey)) {
77 throw new IllegalStateException(
"Plugin key " + pluginKey +
" is already in use");
79 mPluginMap.put(pluginKey,
null);
80 return new FlutterRegistrar(pluginKey);
84 mFlutterView = flutterView;
86 mPlatformViewsController.attach(activity, flutterView, flutterView.getDartExecutor());
90 mPlatformViewsController.detach();
91 mPlatformViewsController.onDetachedFromJNI();
97 mPlatformViewsController.onPreEngineRestart();
101 return mPlatformViewsController;
104 private class FlutterRegistrar
implements Registrar {
105 private final String pluginKey;
107 FlutterRegistrar(String pluginKey) {
108 this.pluginKey = pluginKey;
112 public Activity activity() {
122 public Context activeContext() {
123 return (mActivity !=
null) ? mActivity : mAppContext;
127 public BinaryMessenger messenger() {
137 public PlatformViewRegistry platformViewRegistry() {
138 return mPlatformViewsController.getRegistry();
147 public String lookupKeyForAsset(String asset) {
148 return FlutterMain.getLookupKeyForAsset(asset);
152 public String lookupKeyForAsset(String asset, String packageName) {
153 return FlutterMain.getLookupKeyForAsset(asset, packageName);
157 public Registrar publish(Object value) {
158 mPluginMap.put(pluginKey, value);
163 public Registrar addRequestPermissionsResultListener(
164 RequestPermissionsResultListener listener) {
165 mRequestPermissionsResultListeners.
add(listener);
170 public Registrar addActivityResultListener(ActivityResultListener listener) {
171 mActivityResultListeners.
add(listener);
176 public Registrar addNewIntentListener(NewIntentListener listener) {
177 mNewIntentListeners.
add(listener);
182 public Registrar addUserLeaveHintListener(UserLeaveHintListener listener) {
183 mUserLeaveHintListeners.
add(listener);
188 public Registrar addWindowFocusChangedListener(WindowFocusChangedListener listener) {
189 mWindowFocusChangedListeners.
add(listener);
194 public Registrar addViewDestroyListener(ViewDestroyListener listener) {
195 mViewDestroyListeners.
add(listener);
202 int requestCode, String[] permissions,
int[] grantResults) {
203 for (RequestPermissionsResultListener listener : mRequestPermissionsResultListeners) {
204 if (listener.onRequestPermissionsResult(requestCode, permissions, grantResults)) {
213 for (ActivityResultListener listener : mActivityResultListeners) {
214 if (listener.onActivityResult(requestCode, resultCode, data)) {
223 for (NewIntentListener listener : mNewIntentListeners) {
224 if (listener.onNewIntent(intent)) {
233 for (UserLeaveHintListener listener : mUserLeaveHintListeners) {
234 listener.onUserLeaveHint();
240 for (WindowFocusChangedListener listener : mWindowFocusChangedListeners) {
241 listener.onWindowFocusChanged(hasFocus);
247 boolean handled =
false;
248 for (ViewDestroyListener listener : mViewDestroyListeners) {
249 if (listener.onViewDestroy(view)) {
257 mPlatformViewsController.onDetachedFromJNI();
std::vector< std::shared_ptr< FakeTexture > > textures