From d6e68f5cb8f84b367dcadd1a933013fddd185d24 Mon Sep 17 00:00:00 2001 From: Amit Davidi Date: Tue, 11 Oct 2016 23:03:29 +0300 Subject: [PATCH] Notification opening (ProxyActivity) --- example/android/myapplication/build.gradle | 2 +- .../android/myapplication/proguard-rules.pro | 3 + .../src/main/AndroidManifest.xml | 18 ++- .../app/ChildActivity.java | 20 +++ .../app/MainActivity.java | 83 ++++------ .../app/MainApplication.java | 35 ++++ .../src/main/res/layout/activity_child.xml | 21 +++ .../src/main/res/layout/activity_main.xml | 23 +++ .../src/main/res/values-w820dp/dimens.xml | 6 + .../src/main/res/values/dimens.xml | 5 + .../src/main/res/values/strings.xml | 1 - .../src/main/res/values/styles.xml | 2 +- .../src/main/AndroidManifest.xml | 14 +- .../wix/reactnativenotifications/Defs.java | 5 +- .../GcmMessageHandlerService.java | 84 ---------- .../RNNotificationsContextHolder.java | 30 ---- .../RNNotificationsPackage.java | 5 +- .../core/InitialNotificationStore.java | 13 ++ .../core/NotificationIntentAdapter.java | 20 +++ .../core/ProxyActivity.java | 28 ++++ .../core/PushNotification.java | 150 ++++++++++++++++++ .../core/PushNotificationProps.java | 46 ++++++ .../{ => core}/RNNotificationsModule.java | 33 ++-- .../GcmInstanceIdListenerService.java | 2 +- .../GcmInstanceIdRefreshHandlerService.java | 11 +- .../gcm/GcmMessageHandlerService.java | 25 +++ .../main/res/drawable-hdpi/notification.png | Bin 3418 -> 0 bytes .../main/res/drawable-mdpi/notification.png | Bin 2206 -> 0 bytes .../main/res/drawable-xhdpi/notification.png | Bin 4842 -> 0 bytes .../main/res/drawable-xxhdpi/notification.png | Bin 7718 -> 0 bytes .../res/drawable-xxxhdpi/notification.png | Bin 10486 -> 0 bytes .../src/main/res/values/strings.xml | 3 - example/android/send_notif.py | 4 +- example/index.android.js | 46 +++++- example/notifications.android.js | 70 ++++++++ 35 files changed, 597 insertions(+), 211 deletions(-) create mode 100644 example/android/myapplication/src/main/java/com/wix/reactnativenotifications/app/ChildActivity.java create mode 100644 example/android/myapplication/src/main/java/com/wix/reactnativenotifications/app/MainApplication.java create mode 100644 example/android/myapplication/src/main/res/layout/activity_child.xml create mode 100644 example/android/myapplication/src/main/res/layout/activity_main.xml create mode 100644 example/android/myapplication/src/main/res/values-w820dp/dimens.xml create mode 100644 example/android/myapplication/src/main/res/values/dimens.xml delete mode 100644 example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/GcmMessageHandlerService.java delete mode 100644 example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/RNNotificationsContextHolder.java create mode 100644 example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/InitialNotificationStore.java create mode 100644 example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java create mode 100644 example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/ProxyActivity.java create mode 100644 example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/PushNotification.java create mode 100644 example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/core/PushNotificationProps.java rename example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/{ => core}/RNNotificationsModule.java (53%) rename example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/{ => gcm}/GcmInstanceIdListenerService.java (93%) rename example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/{ => gcm}/GcmInstanceIdRefreshHandlerService.java (85%) create mode 100644 example/android/reactnativenotification/src/main/java/com/wix/reactnativenotifications/gcm/GcmMessageHandlerService.java delete mode 100644 example/android/reactnativenotification/src/main/res/drawable-hdpi/notification.png delete mode 100644 example/android/reactnativenotification/src/main/res/drawable-mdpi/notification.png delete mode 100644 example/android/reactnativenotification/src/main/res/drawable-xhdpi/notification.png delete mode 100644 example/android/reactnativenotification/src/main/res/drawable-xxhdpi/notification.png delete mode 100644 example/android/reactnativenotification/src/main/res/drawable-xxxhdpi/notification.png delete mode 100644 example/android/reactnativenotification/src/main/res/values/strings.xml create mode 100644 example/notifications.android.js diff --git a/example/android/myapplication/build.gradle b/example/android/myapplication/build.gradle index e18eb02..91b6539 100644 --- a/example/android/myapplication/build.gradle +++ b/example/android/myapplication/build.gradle @@ -5,7 +5,7 @@ android { buildToolsVersion "24.0.1" defaultConfig { - applicationId "com.wix.reactnativenotifications" + applicationId "com.wix.reactnativenotifications.app" minSdkVersion 16 targetSdkVersion 23 versionCode 1 diff --git a/example/android/myapplication/proguard-rules.pro b/example/android/myapplication/proguard-rules.pro index d603615..57dcf0f 100644 --- a/example/android/myapplication/proguard-rules.pro +++ b/example/android/myapplication/proguard-rules.pro @@ -15,3 +15,6 @@ #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} + +-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } +-keep class * extends com.facebook.react.bridge.NativeModule { *; } diff --git a/example/android/myapplication/src/main/AndroidManifest.xml b/example/android/myapplication/src/main/AndroidManifest.xml index ec5c059..214751c 100644 --- a/example/android/myapplication/src/main/AndroidManifest.xml +++ b/example/android/myapplication/src/main/AndroidManifest.xml @@ -3,27 +3,33 @@ package="com.wix.reactnativenotifications.app"> - + - - + + android:label="@string/app_name"> + + + - + \ No newline at end of file diff --git a/example/android/myapplication/src/main/java/com/wix/reactnativenotifications/app/ChildActivity.java b/example/android/myapplication/src/main/java/com/wix/reactnativenotifications/app/ChildActivity.java new file mode 100644 index 0000000..645bb3b --- /dev/null +++ b/example/android/myapplication/src/main/java/com/wix/reactnativenotifications/app/ChildActivity.java @@ -0,0 +1,20 @@ +package com.wix.reactnativenotifications.app; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; + +public class ChildActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_child); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + } + + @Override + public void onBackPressed() { + super.onBackPressed(); + finish(); + } +} diff --git a/example/android/myapplication/src/main/java/com/wix/reactnativenotifications/app/MainActivity.java b/example/android/myapplication/src/main/java/com/wix/reactnativenotifications/app/MainActivity.java index 67e3b24..ace7301 100644 --- a/example/android/myapplication/src/main/java/com/wix/reactnativenotifications/app/MainActivity.java +++ b/example/android/myapplication/src/main/java/com/wix/reactnativenotifications/app/MainActivity.java @@ -1,46 +1,39 @@ package com.wix.reactnativenotifications.app; import android.annotation.TargetApi; -import android.app.Activity; import android.content.Intent; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.provider.Settings; -import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; +import android.view.ViewGroup; +import android.widget.Toolbar; -import com.facebook.react.LifecycleState; -import com.facebook.react.ReactInstanceManager; +import com.facebook.react.ReactActivity; import com.facebook.react.ReactRootView; -import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; -import com.facebook.react.shell.MainReactPackage; -import com.wix.reactnativenotifications.RNNotificationsPackage; import static android.os.Build.VERSION.SDK_INT; -public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler { +public class MainActivity extends ReactActivity { private static final int OVERLAY_PERMISSION_REQ_CODE = 1234; private ReactRootView mReactRootView; - private ReactInstanceManager mReactInstanceManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + ViewGroup layout = (ViewGroup) getLayoutInflater().inflate(R.layout.activity_main, null); + Toolbar toolbar = (Toolbar) layout.findViewById(R.id.toolbar); + setActionBar(toolbar); + mReactRootView = new ReactRootView(this); - mReactInstanceManager = ReactInstanceManager.builder() - .setApplication(getApplication()) - .setBundleAssetName("index.android.bundle") - .setJSMainModuleName("index.android") - .addPackage(new MainReactPackage()) - .addPackage(new RNNotificationsPackage()) - .setUseDeveloperSupport(BuildConfig.DEBUG) - .setInitialLifecycleState(LifecycleState.RESUMED) - .build(); + layout.addView(mReactRootView); + + setContentView(layout); if (SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(this)) { Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())); @@ -50,9 +43,22 @@ public class MainActivity extends Activity implements DefaultHardwareBackBtnHand } } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + menu.add("Child Activity").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + Intent intent = new Intent(MainActivity.this, ChildActivity.class); + MainActivity.this.startActivity(intent); + return true; + } + }); + return super.onCreateOptionsMenu(menu); + } + @TargetApi(Build.VERSION_CODES.M) @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { + public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == OVERLAY_PERMISSION_REQ_CODE) { if (Settings.canDrawOverlays(this)) { startReactApplication(); @@ -62,40 +68,7 @@ public class MainActivity extends Activity implements DefaultHardwareBackBtnHand } } - @Override - protected void onResume() { - super.onResume(); - - if (mReactInstanceManager != null) { - mReactInstanceManager.onHostResume(this, this); - } - } - - @Override - protected void onPause() { - super.onPause(); - - if (mReactInstanceManager != null) { - mReactInstanceManager.onHostPause(this); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - - if (mReactInstanceManager != null) { - mReactInstanceManager.onHostDestroy(this); - } - } - - @Override - public void invokeDefaultOnBackPressed() { - super.onBackPressed(); - } - private void startReactApplication() { - mReactRootView.startReactApplication(mReactInstanceManager, "WixRNNotifications", null); - setContentView(mReactRootView); + mReactRootView.startReactApplication(getReactInstanceManager(), "WixRNNotifications", null); } } diff --git a/example/android/myapplication/src/main/java/com/wix/reactnativenotifications/app/MainApplication.java b/example/android/myapplication/src/main/java/com/wix/reactnativenotifications/app/MainApplication.java new file mode 100644 index 0000000..fc8df00 --- /dev/null +++ b/example/android/myapplication/src/main/java/com/wix/reactnativenotifications/app/MainApplication.java @@ -0,0 +1,35 @@ +package com.wix.reactnativenotifications.app; + +import android.app.Application; + +import com.facebook.react.ReactApplication; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.shell.MainReactPackage; +import com.wix.reactnativenotifications.RNNotificationsPackage; + +import java.util.Arrays; +import java.util.List; + +public class MainApplication extends Application implements ReactApplication { + + private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { + @Override + protected boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + return Arrays.asList( + new MainReactPackage(), + new RNNotificationsPackage() + ); + } + }; + + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } +} diff --git a/example/android/myapplication/src/main/res/layout/activity_child.xml b/example/android/myapplication/src/main/res/layout/activity_child.xml new file mode 100644 index 0000000..a95e8a2 --- /dev/null +++ b/example/android/myapplication/src/main/res/layout/activity_child.xml @@ -0,0 +1,21 @@ + + + + + + diff --git a/example/android/myapplication/src/main/res/layout/activity_main.xml b/example/android/myapplication/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..349ccb5 --- /dev/null +++ b/example/android/myapplication/src/main/res/layout/activity_main.xml @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/example/android/myapplication/src/main/res/values-w820dp/dimens.xml b/example/android/myapplication/src/main/res/values-w820dp/dimens.xml new file mode 100644 index 0000000..63fc816 --- /dev/null +++ b/example/android/myapplication/src/main/res/values-w820dp/dimens.xml @@ -0,0 +1,6 @@ + + + 64dp + diff --git a/example/android/myapplication/src/main/res/values/dimens.xml b/example/android/myapplication/src/main/res/values/dimens.xml new file mode 100644 index 0000000..47c8224 --- /dev/null +++ b/example/android/myapplication/src/main/res/values/dimens.xml @@ -0,0 +1,5 @@ + + + 16dp + 16dp + diff --git a/example/android/myapplication/src/main/res/values/strings.xml b/example/android/myapplication/src/main/res/values/strings.xml index 3e65fa4..7fd259a 100644 --- a/example/android/myapplication/src/main/res/values/strings.xml +++ b/example/android/myapplication/src/main/res/values/strings.xml @@ -1,4 +1,3 @@ Wix RN Notifications - Settings diff --git a/example/android/myapplication/src/main/res/values/styles.xml b/example/android/myapplication/src/main/res/values/styles.xml index fa3d07c..16dbab3 100644 --- a/example/android/myapplication/src/main/res/values/styles.xml +++ b/example/android/myapplication/src/main/res/values/styles.xml @@ -1,7 +1,7 @@ -