Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

android - Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference #53

Closed
psyzz opened this issue Dec 13, 2016 · 18 comments
Labels

Comments

@psyzz
Copy link

psyzz commented Dec 13, 2016

Hello guys,

i'm trying to build an app i made on iOS to Android, and i have this error at startup:

12-13 17:18:36.483  5384  5384 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
12-13 17:18:36.483  5384  5384 E AndroidRuntime: 	at com.audioStreaming.ReactNativeAudioStreamingModule.getClassActivity(ReactNativeAudioStreamingModule.java:43)
12-13 17:18:36.483  5384  5384 E AndroidRuntime: 	at com.audioStreaming.Signal.setData(Signal.java:66)
12-13 17:18:36.483  5384  5384 E AndroidRuntime: 	at com.audioStreaming.ReactNativeAudioStreamingModule.onServiceConnected(ReactNativeAudioStreamingModule.java:78)
12-13 17:18:36.483  5384  5384 E AndroidRuntime: 	at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1223)
12-13 17:18:36.483  5384  5384 E AndroidRuntime: 	at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1240)
12-13 17:18:36.483  5384  5384 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:739)
12-13 17:18:36.483  5384  5384 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:95)
12-13 17:18:36.483  5384  5384 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:148)
12-13 17:18:36.483  5384  5384 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:5417)
12-13 17:18:36.483  5384  5384 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
12-13 17:18:36.483  5384  5384 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
12-13 17:18:36.483  5384  5384 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
12-13 17:18:36.484   816  2166 W ActivityManager:   Force finishing activity com.app/.MainActivity

Do you have any idea?
Thanks!

"react-native-audio-streaming": "^2.2.0",
"react-native": "0.35.0",
"react": "15.3.2"

My MainApplication.java:

package com.app;

import android.app.Application;
import android.support.annotation.NonNull;
import android.util.Log;

import com.facebook.react.ReactApplication;
import com.reactnativenavigation.NavigationApplication;
import com.wog.videoplayer.VideoPlayerPackage;
import com.cmcewen.blurview.BlurViewPackage;
import com.audioStreaming.ReactNativeAudioStreamingPackage;
import com.rnim.rn.audio.ReactNativeAudioPackage;
import com.brentvatne.react.ReactVideoPackage;
import fr.bamlab.rnimageresizer.ImageResizerPackage;
import com.reactnative.ivpusic.imagepicker.PickerPackage;
import com.microsoft.codepush.react.CodePush;
import com.geektime.reactnativeonesignal.ReactNativeOneSignalPackage;
import com.imagepicker.ImagePickerPackage;
import com.RNFetchBlob.RNFetchBlobPackage;
import com.oblador.vectoricons.VectorIconsPackage;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;

import java.util.Arrays;
import java.util.List;

public class MainApplication extends NavigationApplication {

  @Override
  public boolean isDebug() {
      return BuildConfig.DEBUG;
  }

  @NonNull
  @Override
  public List<ReactPackage> createAdditionalReactPackages() {
      return Arrays.<ReactPackage>asList(
          new VideoPlayerPackage(),
          new BlurViewPackage(),
          new ReactNativeAudioStreamingPackage(),
          new ReactNativeAudioPackage(),
          new ReactVideoPackage(),
          new ImageResizerPackage(),
          new PickerPackage(),
          new CodePush(null, getApplicationContext(), BuildConfig.DEBUG),
          new ReactNativeOneSignalPackage(),
          new ImagePickerPackage(),
          new RNFetchBlobPackage(),
          new VectorIconsPackage()
      );
  }
}
@tlenclos tlenclos added the bug label Dec 14, 2016
@Arkanine
Copy link

Hi, I have the same issue.

@psyzz
Copy link
Author

psyzz commented Dec 16, 2016

Couldn't find a fix yet :(

@tlenclos
Copy link
Owner

Will look into it this weekend. Do you experience this bug when only including this module ?

@psyzz
Copy link
Author

psyzz commented Dec 17, 2016

Yes, i can't run my app with it, i need to remove ReactNativeAudioStreamingPackage() from MainApplication.java and all related code in android/settings.gradle and android/app/build.gradle to run the app without react-native-audio-streaming

@Arkanine
Copy link

Arkanine commented Dec 18, 2016

In my case react-native-audio-streaming module crash the process of react-native-push-notification when i receive remote notification and the app is closed. Another words when the new remote notification arrived, the react-native-push-notification start some process in background and the react-native-audio-streaming crash this process.

The logs looks this way:
AndroidRuntime: FATAL EXCEPTION: main
Process: com.thedevoapp, PID: 32392
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
at com.audioStreaming.ReactNativeAudioStreamingModule.getClassActivity(ReactNativeAudioStreamingModule.java:43)
at com.audioStreaming.Signal.setData(Signal.java:66)
at com.audioStreaming.ReactNativeAudioStreamingModule.onServiceConnected(ReactNativeAudioStreamingModule.java:78)
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1206)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1223)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)

@Arkanine
Copy link

@arshavinho try to set new ReactNativeAudioStreamingPackage() into MainApplication.java
instead of new ReactNativeAudioStreamingPackage(MainActivity.class).

@tlenclos
Copy link
Owner

I can't manage to reproduce the error but it seems that for some reason the currentActivity could be null in the module. I found some workaround here bourgois/react-native-hockeyapp@224a447 and in the react-native doc http://facebook.github.io/react-native/docs/native-modules-android.html#getting-activity-result-from-startactivityforresult.

If someone want to take a look, or give me access to a public repo with the bug, I could look into it.

@psyzz
Copy link
Author

psyzz commented Dec 19, 2016

@Arkanine i already have new ReactNativeAudioStreamingPackage(); in my MainApplication.java
@tlenclos thanks for your time, when i open my project in Android Studio i have this:
screen shot 2016-12-19 at 01 35 13

and in ReactNativeAudioStreamingModule.java:
screen shot 2016-12-19 at 01 41 24

Maybe it's related to react-native-navigation ? For android we need to change or MainApplication.java and MainActivity:

https://github.com/wix/react-native-navigation/wiki/Installation---Android
My MainActivity.java:

package com.appname;

import com.reactnativenavigation.controllers.SplashActivity;

public class MainActivity extends SplashActivity {

}

@psyzz
Copy link
Author

psyzz commented Dec 19, 2016

i modified ReactNativeAudioStreamingModule.java like:

import android.app.Activity;
.
.
.
public Class<?> getClassActivity() {
    Activity currentActivity = getCurrentActivity();
    if (currentActivity == null) {
        // The currentActivity can be null if it is backgrounded / destroyed, so we simply
        // no-op to prevent any null pointer exceptions.
        return null;
    }
    if (this.clsActivity == null) {
      this.clsActivity = getCurrentActivity().getClass();
    }
    return this.clsActivity;
  }

and now the app starts, but when i try to play a sound i get:

12-18 20:13:05.077 11308 11396 E unknown:React: Exception in native call
12-18 20:13:05.077 11308 11396 E unknown:React: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Class.getName()' on a null object reference
12-18 20:13:05.077 11308 11396 E unknown:React: 	at android.content.ComponentName.<init>(ComponentName.java:129)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at android.content.Intent.<init>(Intent.java:4449)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at com.audioStreaming.Signal.showNotification(Signal.java:175)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at com.audioStreaming.ReactNativeAudioStreamingModule.playInternal(ReactNativeAudioStreamingModule.java:105)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at com.audioStreaming.ReactNativeAudioStreamingModule.play(ReactNativeAudioStreamingModule.java:99)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at java.lang.reflect.Method.invoke(Native Method)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at com.facebook.react.bridge.BaseJavaModule$JavaMethod.invoke(BaseJavaModule.java:318)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at com.facebook.react.cxxbridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:158)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at android.os.Handler.handleCallback(Handler.java:739)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at android.os.Handler.dispatchMessage(Handler.java:95)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at android.os.Looper.loop(Looper.java:148)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196)
12-18 20:13:05.077 11308 11396 E unknown:React: 	at java.lang.Thread.run(Thread.java:818)

@hugohow
Copy link

hugohow commented Jan 4, 2017

I have the same bug, does anyone have a solution ?

@psyzz
Copy link
Author

psyzz commented Jan 4, 2017

unfortunately no :(

@marcshilling
Copy link

Adding <service android:name=".ReactNativeAudioStreaming.Signal" android:enabled="true" /> to my manifest file fixed this issue.

@lucasromanojf
Copy link

I still have the same issue.

@cherniv
Copy link

cherniv commented Jun 12, 2017

Are you using code-push? Cause in my case this is what causes this bug

@psyzz
Copy link
Author

psyzz commented Jun 12, 2017

@cherniv yes using codepush

@cherniv
Copy link

cherniv commented Jun 12, 2017

I've opened an issue: microsoft/react-native-code-push#872 , but it looks like no one can help, frustrating...

@SydneyTR
Copy link

SydneyTR commented Oct 1, 2017

Still an issue

@arcollector
Copy link

arcollector commented Jun 16, 2018

add these lines to Signal.java

public void showNotification() {
        if(clsActivity == null) {
            clsActivity = module.getClassActivity();
        }
        ....

waskosky added a commit to waskosky/react-native-audio-streaming that referenced this issue Oct 22, 2018
@psyzz psyzz closed this as completed Apr 18, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

9 participants