我是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未设置为启动器..
答案 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" />