2016-11-22 4 views
1

私は非常にシンプルなAndroid-Appを持っています。一つのビューには他のビューのボタンがあります。 他のビューでは、私はReact-Nativeコンポーネントを表示する必要があります。既存のAndroid AppにReact-Nativビューを含める

public class MyReactActivity extends Activity { 

private ReactRootView mReactRootView; 
private ReactInstanceManager mReactInstanceManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    mReactRootView = new ReactRootView(this); 

    mReactInstanceManager = ReactInstanceManager.builder() 
      .setApplication(getApplication()) 
      .setBundleAssetName("main.jsbundle") 
      .setJSMainModuleName("index.android.js") 
      .addPackage(new MainReactPackage()) 
      .setUseDeveloperSupport(BuildConfig.DEBUG) 
      .setInitialLifecycleState(LifecycleState.RESUMED) 
      .build(); 
    mReactRootView.startReactApplication(mReactInstanceManager, "MyReactApp", null); 

    setContentView(mReactRootView); 
} 

このアプリは、[OK]を起動しますが、私はビューを変更するには、ボタンに触れたとき、とアプリがクラッシュ:

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.example.kris.testa, PID: 2612 
       android.view.WindowManager$BadTokenException: Unable to add window [email protected] -- permission denied for window type 2003 
        at android.view.ViewRootImpl.setView(ViewRootImpl.java:703) 
        at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342) 
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93) 
        at android.app.Dialog.show(Dialog.java:322) 
        at com.facebook.react.devsupport.DevSupportManagerImpl.handleReloadJS(DevSupportManagerImpl.java:538) 
        at com.facebook.react.ReactInstanceManagerImpl$3$1.run(ReactInstanceManagerImpl.java:386) 
        at android.os.Handler.handleCallback(Handler.java:751) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6119) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

私は、この私の小さなコードですhttps://facebook.github.io/react-native/docs/integration-with-existing-apps.html#integration-with-existing-apps私の活動の指示に従っ私は間違っている?誰も助けることができますか?

UPDATE: 私のAndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.kris.testa"> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 

    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".MyReactActivity" android:label="@string/app_name" 
     android:theme="@style/Theme.AppCompat.Light.NoActionBar" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenSize"> 

    </activity> 
    <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> 

</application> 
</manifest> 

答えて

1

AndroidManifestでこの権限を使用してみてください。

android.permission.SYSTEM_ALERT_WINDOW

on API >= 23 see

リンク:https://stackoverflow.com/a/7570071/1796309

あなたがAndroidのバージョン> = 6.0を使用している場合は、あなたがAndroidのパーミッションモデルに従わなければならない、あなたが要求する必要があり、すなわち、実行時にこのアクセス許可。

あなただけbuild.gradleであなたのtargetSdkVersion22に設定、実行時に許可を要求したくない場合は、次の

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     applicationId "ru.goenglish.goenglish" 
     minSdkVersion 14 
     targetSdkVersion 22   <<<<<<<<<<<<<<<<<<<<<<<<< 
     versionCode 1 
     versionName "1.0" 
    } 
... 
} 
+0

HM、私はすでに持っている:<使用許可アンドロイド:名= "android.permissionを。 INTERNET "/> これを投稿に追加します。 –

+0

@PeterShaw、私は答えを更新しました – Alexander

+0

ああ、ありがとうございました。私はそれを試してみましょう。 –

関連する問題