在安卓系统中更改默认活动

4

你好,我想更改默认活动。但是当我这样做时,应用程序根本不会启动,也没有任何错误。

<activity 
        android:name="com.example.dimmer.MainActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name="com.example.dimmer.DevicesActivity" >
    </activity>

这样MainActivity就可以无问题启动。当我按下按钮时,它也会进入Device activity。所以一切都很顺利。

现在我需要将DeviceActivity设置为默认活动页面。

我像这样更改Manifest:

<activity 
            android:name="com.example.dimmer.DevicesActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name="com.example.dimmer.MainActivity" >
        </activity>

但现在应用程序无法启动。没有错误,控制台中没有任何输出。它似乎什么都没做, 可能是什么问题?

开始写以下错误信息 ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.dimmer/.MainActivity } [2014-05-16 21:17:10 - Dimmer] ActivityManager: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.dimmer/.MainActivity } from null (pid=13093, uid=2000) requires null

完整的清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.dimmer"
    android:versionCode="1"
    android:versionName="1.0" 
    android:hardwareAccelerated="false">

    <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="14" />
    <uses-permission android:name="android.permission.INTERNET" /> 

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

        <activity 
            android:name="com.example.dimmer.DevicesActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name="com.example.dimmer.MainActivity" >
        </activity>

    </application>

</manifest>


[2014-05-16 22:13:25 - Dimmer] Android Launch!
[2014-05-16 22:13:25 - Dimmer] adb is running normally.
[2014-05-16 22:13:25 - Dimmer] Performing com.example.dimmer.MainActivity activity launch
[2014-05-16 22:13:26 - Dimmer] Uploading Dimmer.apk onto device 'SH17VT514235'
[2014-05-16 22:13:26 - Dimmer] Installing Dimmer.apk...
[2014-05-16 22:13:29 - Dimmer] Success!
[2014-05-16 22:13:29 - Dimmer] Starting activity com.example.dimmer.MainActivity on device SH17VT514235
[2014-05-16 22:13:29 - Dimmer] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.dimmer/.MainActivity }
[2014-05-16 22:13:29 - Dimmer] ActivityManager: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.dimmer/.MainActivity } from null (pid=15458, uid=2000) requires null

我尝试从Eclipse启动它。当我手动从设备上启动时,它可以工作。 - user3485986
请问您能否发布完整的Android清单文件?@user3485986 - Lal
尝试删除 bin 文件夹的内容并运行应用程序。 - Lal
android:exported 设置为 true 并尝试... - Lal
如果那也不起作用...尝试从设备中卸载应用程序,清理项目,重新构建,然后启动应用程序... - Lal
显示剩余5条评论
5个回答

7

既然您将包定义为“com.example.dimmer”,那么您可以移除包名并只使用Activity的名称 前面带点号

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

    <activity 
        android:name=".DevicesActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".MainActivity" >
    </activity>

</application>

此外,请检查Eclipse中的运行配置设置。如果您的启动活动设置为MainActivity,并且在清单中将DevicesActivity设置为主要活动,则通过Eclipse启动应用程序时可能无法启动。点击RUN图标上的箭头,选择“Run Configurations”,
然后确保您选择了DevicesActivity作为启动项:

android:name="DevicesActivity" 更改为 android:name=".DevicesActivity" - Lal
不起作用。它仍然试图启动MainActivity。也许还有其他地方需要我更改吗? - user3485986
检查您在运行配置中的启动活动。 - Melquiades
1
谢谢!就是这个。我不知道启动活动是在运行配置中设置的...非常感谢! - user3485986

0

在您的手机上卸载该应用,并重新下载它。


尝试卸载、安装、重启Eclipse,但仍然无法解决问题。 - user3485986
如果您回到应用程序正常工作的状态,那么应用程序是否会重新运行? - bobby4078
是的,如果我将MainActivity改回默认值,则它可以正常工作。否则就不行。 - user3485986

0
确保你在 onCreate 方法中实现了 setContentView
另外一种方式是尝试清理项目Project > Clean并运行它。

setContentView(R.layout.activity_devices); 已经做了。我也清理了项目,但没有帮助。 - user3485986
当我从MainActivity启动它时,DeviceActivity运行良好。 - user3485986
清理后,我进行了无效操作并清除了缓存,现在可以正常工作了! - Rohan Ashik

0

我不确定,但现在你可以更进一步了。
例如:
1. 删除Android.R(在您的活动中)
2. 或者替换package.R,例如com.example.name.R
3. 检查您的res文件夹或子文件夹资源。
例如布局属性是否正确。
4. 删除gen和bin文件夹。
5. 清理您的项目:项目=>清理
6. 重新启动您的eclipse。

请记住,如果找不到您的资源,则会显示此类型的错误。

祝你好运!


0

点击箭头以获取“运行配置”图标并选择
Android 应用程序 => 选择项目
打开目标选项卡
选择始终提示设备
点击运行并选择在线设备


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接