2016-11-03 43 views
0

我已经将反应本机从0.27更新为0.35。将release.apk安装到我的设备后,我只能用adb shell启动它。Android无法找到应用程序的主要活动

安装不会在手机上创建“桌面”图标(是的,png-s放置正确),并在设置/应用程序管理器中,即使我可以找到我的应用程序和所有关于它的信息,我无法通过它的mainActivity启动它。

任何想法?

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
package="my.pckg.name" 
android:versionCode="1" 
android:versionName="1.0"> 

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

<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 


<uses-sdk 
    android:minSdkVersion="16" 
    android:targetSdkVersion="22" /> 

<application 
    android:name=".MainApplication" 
    android:allowBackup="true" 
    android:label="@string/app_name" 
    android:icon="@mipmap/ic_launcher" 
    android:theme="@style/AppTheme"> 
    <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 
      android:launchMode="singleTop"> 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <data android:scheme="http" 
        android:host="my.website.for.DeepLink" 
        android:pathPrefix="/#/register_login/status=successful" />   
     </intent-filter>   
    </activity> 
</application></manifest> 

MainActivity:

package my.pckg.name; 
import com.facebook.react.ReactActivity; 
public class MainActivity extends ReactActivity { 
/** 
* Returns the name of the main component registered from JavaScript. 
* This is used to schedule rendering of the component. 
*/ 
@Override 
protected String getMainComponentName() { 
    return "pckgName"; 
}} 

MainApplication:

package my.pckg.name; 

import android.app.Application; 
import android.util.Log; 

import com.facebook.react.ReactApplication; 
import com.facebook.react.ReactInstanceManager; 
import com.facebook.react.ReactNativeHost; 
import com.facebook.react.ReactPackage; 
import com.facebook.react.shell.MainReactPackage; 
//... other stuff 
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<ReactPackage> getPackages() { 
    return Arrays.<ReactPackage>asList(
     new MainReactPackage(), 
     //.... other stuff 
); 
} 
}; 

    @Override 
    public ReactNativeHost getReactNativeHost() { 
     return mReactNativeHost; 
    } 
} 
+0

选中此http://stackoverflow.com/a/ 15358205/2125612和http://stackoverflow.com/a/4776971/2125612 – Jickson

+1

谢谢!第二个帮了很多! – ddobby94

回答

2

就想通了:

的问题是在MainActivity标签内。 您需要将MainActivity的内部内容与< intent-filter>标记分开。

前:

<intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <data android:scheme="http" 
       android:host="my.website.for.DeepLink" 
       android:pathPrefix="/#/register_login/status=successful" />   
    </intent-filter>  

后(工作一个):

<intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <data android:scheme="http" 
       android:host="my.website.for.DeepLink" 
       android:pathPrefix="/#/register_login/status=successful" />   
    </intent-filter>  

更多信息:https://developer.android.com/guide/components/intents-filters.html#imatch

1

你必须定义你的启动活动在Android清单。

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

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
+0

这是我的清单:' android:name =“android.intent.action.VIEW”/> =“android.intent.category.LAUNCHER”/> ' – ddobby94

+0

你能编辑你的maint文章吗?和你的主要活动TY?如果您可以正确解析它,我们很容易为您提供帮助。 – SamuelPS

相关问题