应用程序不从清单中的预期类开始

时间:2015-01-30 11:31:27

标签: java android android-studio android-manifest build.gradle

我是Android Studio的新手,我正在尝试移植我在Eclipse ADT中的工作项目。

这是一个应用程序(ArchPanoViewer)依赖于两个库:Zxing _which是_和PanoramaGL“lib_panorama”中的“captureActivity”。该应用程序的范围是在开始时显示一个对话框窗口,然后当您按下按钮时启动条形码扫描仪(MainActivity.java),然后通过QRcode检索到的图像显示在全景视图(PanoramaActivity.java)中。

这是一般的项目结构:

ArchPanoViewer
|_ app
     |_com.example.admin.archpanoviewer
         |_MainActivity.java
         |_PanoramaActivity.java
|_captureActivity
|_lib_panorama

我在app文件夹中有一个名为MainActivity.java的起始类。

这是我在使用Eclipse编程时使用的“app”的清单文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.admin.archpanoviewer"
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

<application
    android:allowBackup="true"
    android:label="@string/app_name"
    tools:replace="icon"
    android:icon="@drawable/ic_launcher"
    android:theme="@style/AppTheme" >


<activity
    android:name="com.example.admin.archpanoviewer.MainActivity"
    android:configChanges="orientation|screenSize" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity
    android:name="com.google.zxing.client.android.CaptureActivity"
    android:screenOrientation="landscape"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    android:windowSoftInputMode="stateAlwaysHidden" >

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>    //this part was deleted according to suggestions 

    <intent-filter>
        <action android:name="com.google.zxing.client.android.SCAN" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

<activity
    android:name="com.example.admin.archpanoviewer.PanoramaActivity"
    android:parentActivityName="com.example.admin.archpanoviewer.MainActivity"
    android:configChanges="orientation" >
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.admin.archpanoviewer.MainActivity" />
</activity>

</application>

Android Studio中的问题是MainActivity.java被完全跳过,应用程序作为简单的条形码扫描程序启动,可以检索QR,就是这样。 它没有考虑在课程中编写的所有工作流程。

我在哪里可以指定应用程序的起点?确保在某处出现冲突,因为应用程序抽屉中出现了2个图标..提前感谢!

P.S。我不知道它们是否有用。但这里也有build.gradles:

build.gradle(整个项目):

 buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:1.0.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
}

allprojects {
repositories {
    jcenter()
}
}

build.gradle(app):

apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    applicationId "com.example.admin.archpanoviewer"
    minSdkVersion 8
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

 dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile project(':lib_panorama')
compile project(':captureActivity')
 }

build.gradle(Zxing)

apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    minSdkVersion 7
    targetSdkVersion 21
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

buildTypes {
    release {
        minifyEnabled true
        proguardFiles 'proguard-android-optimize.txt'
    }
}
}

dependencies {
}

build.gradle(PanoramaGL)

apply plugin: 'java'

dependencies {
compile files('libs/commons-httpclient-3.1.jar')
compile files('libs/android.jar')

}

我没有设法将Zxing导入为一个简单的图书馆作为panoramaGL ..我有方法错误所以我放弃了。我希望这不是问题。

编辑1

根据建议,我仔细检查了清单(上面突出显示的更新)并在正在运行的应用程序窗口中发现了这一行:

 Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.admin.prova/com.google.zxing.client.android.CaptureActivity }

但CaptureActivity未设置为启动器..

2 个答案:

答案 0 :(得分:0)

考虑这个xml部分

<activity
    android:name="com.example.admin.archpanoviewer.MainActivity"
    android:configChanges="orientation|screenSize" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />   <-------Here
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

您要开始的活动必须在此处 MAIN ,否则请在此处 DEFAULT

答案 1 :(得分:0)

基本上意图是Android中交互式通信的一种方式。

每当一个意图被触发时,它就会被期望这个意图的某个活动占用,并且该活动会响应意图。

现在,Android运行时如何告诉您的应用程序的活动开始?嗯......通过发射一个意图。

基本上,这个意图被启动以启动应用程序的主要活动。

<action android:name="android.intent.action.MAIN" />

所以......只有你的主要活动应该听取这个意图。

在你的应用程序中...所有活动都在倾听这些意图...这意味着“据他们所知......所有这些都是主要活动。”

此外......只有启动器活动才能处理此类别的意图。

<category android:name="android.intent.category.LAUNCHER" /> 
相关问题