【问题标题】:Android can't find the mainactivity of applicationAndroid找不到应用程序的mainactivity
【发布时间】:2016-11-03 15:08:48
【问题描述】:

我已将 react-native 从 0.27 更新到 0.35。将 release.apk 安装到我的设备后,我只能使用 adb shell 启动它。

安装不会在手机上创建“桌面”图标(是的,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>

主活动:

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";
}}

主应用程序:

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;
  }
}

【问题讨论】:

标签: android react-native


【解决方案1】:

刚刚想通了:

问题出在 mainActivity 标记内。 您需要使用 标签分隔 MainActivity 的内部内容。

之前:

  <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

【讨论】:

    【解决方案2】:

    您必须在 Android Manifest 中定义您的 Launcher Activity。

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

    【讨论】:

    • 这是我的清单:&lt;activity android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:configChanges="keyboard|keyboardHidden|orientation|screenSize"&gt; &lt;intent-filter&gt; &lt;action android:name="android.intent.action.MAIN" /&gt; &lt;action android:name="android.intent.action.VIEW" /&gt; &lt;category android:name="android.intent.category.LAUNCHER" /&gt; &lt;category android:name="android.intent.category.DEFAULT" /&gt; &lt;/intent-filter&gt; &lt;/activity&gt;
    • 您可以编辑您的维护帖子添加您的清单和您的主要活动吗?如果您能正确解析它,我们将很容易为您提供帮助。
    猜你喜欢
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 2014-07-25
    • 2016-06-06
    相关资源
    最近更新 更多