【问题标题】:Changing default activity in android更改android中的默认活动
【发布时间】:2014-07-05 02:03:55
【问题描述】:

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

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

这样 MainActivty 可以毫无问题地启动。当我按下按钮时,它也会进入设备活动。所以一切正常。 现在我需要 DevcieACtivty 作为默认设置。

我像那样更改清单

<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:开始: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) 需要 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

【问题讨论】:

  • 没有帮助。仍然没有以 DeviceActivity 作为默认启动
  • 您是否尝试通过设备主屏幕上的快捷方式启动它?如果是这样,这些快捷方式可能包含旧的默认活动,而不是指向新的主活动
  • 我尝试从 Eclipse 启动它。当我从设备手动启动 iut 时,它可以工作
  • 能否请您发布完整的 Android Manifest.. @user3485986
  • 尝试删除 bin 文件夹的内容并运行应用程序..

标签: android manifest


【解决方案1】:

由于您已将包定义为“com.example.dimmer”,因此您可以删除包名称并仅使用 Activity with dot in front 的名称:

<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 中的运行配置设置。如果您的启动 Activity 设置为 MainActivity,并且在清单中您将 DevicesActivity 设为 main,则您的应用程序在通过 Eclipse 启动时可能无法启动。单击 RUN 图标的箭头并选择“Run Configurations”,

然后确保选择 DevicesActivity 作为 Launch:

【讨论】:

  • android:name="DevicesActivity" 更改为android:name=".DevicesActivity"
  • 不起作用。它仍然尝试启动 MainActivity。也许还有其他地方我必须改变它?
  • 在运行配置中检查您的启动活动。
  • 谢谢!!就是这样。我不知道 Launch Activty 是在运行配置中设置的...非常感谢!
【解决方案2】:

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

【讨论】:

  • 尝试卸载、安装、重启eclipse。它不起作用。
  • 如果你回到它工作时的状态,应用程序是否再次运行?
  • 是的。如果我在 MainActivity 是默认设置时改回来,那么它可以工作。否则不会
【解决方案3】:

确保在onCreate 方法中实现setContentView

以其他方式尝试清理项目Project &gt; Clean并运行它。

【讨论】:

  • setContentView(R.layout.activity_devices);已经这样做了。我清理了项目。没有帮助。
  • 当我从 MainActivity 启动 DeviceActivity 时它工作正常。
  • 清理后,我无效并重新启动并清除缓存,现在可以工作了!
【解决方案4】:

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

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

祝你好运!

【讨论】:

    【解决方案5】:

    单击“运行”图标的箭头并选择“运行配置”
    Android 应用程序 =>选择项目
    打开目标选项卡
    选择始终提示设备
    点击运行并选择Divice online

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多