SecurityException异常:"无法启动活动的意图和QUOT;用一个简单的startActivity时, [英] SecurityException: "Unable to start activity Intent" when using a simple startActivity

查看:626
本文介绍了SecurityException异常:"无法启动活动的意图和QUOT;用一个简单的startActivity时,的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  startActivity(新意图(这一点,SettingsActivity.class));
 

我得到这个错误的实例为我的用户在4.0:

  java.lang.SecurityException异常:不允许启动活动意向{CMP = co.bandicoot.ztrader / .activity.SettingsActivity}
    在android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1675)
    在android.app.Instrumentation.execStartActivity(Instrumentation.java:1442)
    在android.app.Activity.startActivityForResult(Activity.java:3474)
    在android.app.Activity.startActivityForResult(Activity.java:3435)
    在android.support.v4.app.FragmentActivity.startActivityForResult(的SourceFile:839)
    在android.app.Activity.startActivity(Activity.java:3677)
    在android.app.Activity.startActivity(Activity.java:3645)
    在co.bandicoot.ztrader.activity.MainActivity.onOptionsItemSelected(的SourceFile:3446)
    .....
 

下面是我的舱单申报的SettingsActivity:

 <活动
    机器人:名称=co.bandicoot.ztrader.activity.SettingsActivity
    机器人:标签=@字符串/ action_settings
    机器人:parentActivityName =co.bandicoot.ztrader.activity.MainActivity
    机器人:screenOrientation =画像>
    &所述;元数据
        机器人:名称=android.support.PARENT_ACTIVITY
        机器人:值=co.bandicoot.ztrader.activity.MainActivity/>
< /活性GT;
 

任何想法?

编辑:这是我的完整清单。有什么错在这里?我看SettingsActivity,它似乎并不像有东西在那里,可能需要额外的权限。

 < XML版本=1.0编码=UTF-8&GT?;
<舱单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    包=co.bandicoot.ztrader
    安卓版code =110
    机器人:VERSIONNAME =3.5.2>

    <用途-SDK
        安卓的minSdkVersion =14
        机器人:targetSdkVersion =20/>

    <使用-权限的Andr​​oid:名称=android.permission.INTERNET对/>
    <使用-权限的Andr​​oid:名称=android.permission.WRITE_EXTERNAL_STORAG​​E/>
    <使用-权限的Andr​​oid:名称=android.permission.RECEIVE_BOOT_COMPLETED/>
    <使用-权限的Andr​​oid:名称=android.permission.ACCESS_NETWORK_STATE/>

    <应用
        机器人:allowBackup =真
        机器人:图标=@可绘制/ ic_launcher
        机器人:标签=@字符串/ APP_NAME
        机器人:largeHeap =真
        机器人:主题=@风格/ Theme.Ztraderdarkactionbar>
        <接收机器人:名称=。TickerAlarm>
        < /接收器>
        <接收机器人:名称=。FastAlarm>
        < /接收器>
        <接收机器人:名称=。DownloadCurrencyPairsTask>
        < /接收器>
        <接收器的Andr​​oid版本:NAME =自动开始>
            <意向滤光器>
                <作用机器人:名称=android.intent.action.BOOT_COMPLETED>
                < /作用>
            &所述; /意图滤光器>
        < /接收器>

        <服务机器人:名称=KillNotificationService>
        < /服务>

        <活动
            机器人:名称=co.bandicoot.ztrader.activity.MainActivity
            机器人:configChanges =方向
            机器人:标签=@字符串/ APP_NAME
            机器人:launchMode =singleTask
            机器人:screenOrientation =画像
            机器人:uiOptions =splitActionBarWhenNarrow
            机器人:windowSoftInputMode =stateHidden>
            <意向滤光器>
                <作用机器人:名称=android.intent.action.MAIN/>

                <类机器人:名称=android.intent.category.LAUNCHER/>
            &所述; /意图滤光器>
        < /活性GT;
        <活动
            机器人:名称=co.bandicoot.ztrader.activity.CreateKeyActivity
            机器人:标签=@字符串/ create_key
            机器人:parentActivityName =co.bandicoot.ztrader.activity.MainActivity
            机器人:screenOrientation =画像>
            &所述;元数据
                机器人:名称=android.support.PARENT_ACTIVITY
                机器人:值=co.bandicoot.ztrader.activity.MainActivity/>
        < /活性GT;
        <活动
            机器人:名称=co.bandicoot.ztrader.activity.HistoryActivity
            机器人:标签=@字符串/史
            机器人:parentActivityName =co.bandicoot.ztrader.activity.MainActivity
            机器人:screenOrientation =画像>
            &所述;元数据
                机器人:名称=android.support.PARENT_ACTIVITY
                机器人:值=co.bandicoot.ztrader.activity.MainActivity/>
        < /活性GT;
        <活动
            机器人:名称=co.bandicoot.ztrader.activity.SettingsActivity
            机器人:标签=@字符串/ action_settings
            机器人:parentActivityName =co.bandicoot.ztrader.activity.MainActivity
            机器人:screenOrientation =画像>
            &所述;元数据
                机器人:名称=android.support.PARENT_ACTIVITY
                机器人:值=co.bandicoot.ztrader.activity.MainActivity/>
        < /活性GT;
        <活动
            机器人:名称=co.bandicoot.ztrader.activity.ChartActivity
            机器人:标签=@字符串/ APP_NAME
            机器人:parentActivityName =co.bandicoot.ztrader.activity.MainActivity
            机器人:screenOrientation =风景
            机器人:主题=@安卓风格/ Theme.Holo.NoActionBar.Fullscreen>
            &所述;元数据
                机器人:名称=android.support.PARENT_ACTIVITY
                机器人:值=co.bandicoot.ztrader.activity.MainActivity/>
        < /活性GT;
        <活动
            机器人:名称=co.bandicoot.ztrader.activity.ManagePairsActivity
            机器人:标签=@字符串/对的
            机器人:screenOrientation =画像>
        < /活性GT;
    < /用途>

< /舱单>
 

解决方案

我写的评论,但我将它添加在这里。从链接

  

安卓名称

     

服务子类实现的名字   服务。这应该是一个完整的类名(例如,   com.example.project.RoomService)。然而,作为一个速记,如果   名称的第一个字符是一个周期(例如,.RoomService),   它被附加到指定的包名   元素。

因此​​,尝试和改变你的服务:

 <服务机器人:名称=。KillNotificationService>
    < /服务>
 

startActivity(new Intent(this, SettingsActivity.class));

Got me an instance of this error for one of my users on 4.0:

java.lang.SecurityException: Not allowed to start activity Intent { cmp=co.bandicoot.ztrader/.activity.SettingsActivity }
    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1675)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1442)
    at android.app.Activity.startActivityForResult(Activity.java:3474)
    at android.app.Activity.startActivityForResult(Activity.java:3435)
    at android.support.v4.app.FragmentActivity.startActivityForResult(SourceFile:839)
    at android.app.Activity.startActivity(Activity.java:3677)
    at android.app.Activity.startActivity(Activity.java:3645)
    at co.bandicoot.ztrader.activity.MainActivity.onOptionsItemSelected(SourceFile:3446)
    .....

Here is my manifest declaration for SettingsActivity:

<activity
    android:name="co.bandicoot.ztrader.activity.SettingsActivity"
    android:label="@string/action_settings"
    android:parentActivityName="co.bandicoot.ztrader.activity.MainActivity"
    android:screenOrientation="portrait" >
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="co.bandicoot.ztrader.activity.MainActivity" />
</activity>

Any ideas?

Edit: Here's my full manifest. Is there anything wrong here? I'm looking at SettingsActivity and it doesn't seem like there's anything in there that might need additional permissions.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="co.bandicoot.ztrader"
    android:versionCode="110"
    android:versionName="3.5.2" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="20" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:theme="@style/Theme.Ztraderdarkactionbar" >
        <receiver android:name=".TickerAlarm" >
        </receiver>
        <receiver android:name=".FastAlarm" >
        </receiver>
        <receiver android:name=".DownloadCurrencyPairsTask" >
        </receiver>
        <receiver android:name=".AutoStart" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" >
                </action>
            </intent-filter>
        </receiver>

        <service android:name="KillNotificationService" >
        </service>

        <activity
            android:name="co.bandicoot.ztrader.activity.MainActivity"
            android:configChanges="orientation"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            android:uiOptions="splitActionBarWhenNarrow"
            android:windowSoftInputMode="stateHidden" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="co.bandicoot.ztrader.activity.CreateKeyActivity"
            android:label="@string/create_key"
            android:parentActivityName="co.bandicoot.ztrader.activity.MainActivity"
            android:screenOrientation="portrait" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="co.bandicoot.ztrader.activity.MainActivity" />
        </activity>
        <activity
            android:name="co.bandicoot.ztrader.activity.HistoryActivity"
            android:label="@string/history"
            android:parentActivityName="co.bandicoot.ztrader.activity.MainActivity"
            android:screenOrientation="portrait" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="co.bandicoot.ztrader.activity.MainActivity" />
        </activity>
        <activity
            android:name="co.bandicoot.ztrader.activity.SettingsActivity"
            android:label="@string/action_settings"
            android:parentActivityName="co.bandicoot.ztrader.activity.MainActivity"
            android:screenOrientation="portrait" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="co.bandicoot.ztrader.activity.MainActivity" />
        </activity>
        <activity
            android:name="co.bandicoot.ztrader.activity.ChartActivity"
            android:label="@string/app_name"
            android:parentActivityName="co.bandicoot.ztrader.activity.MainActivity"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="co.bandicoot.ztrader.activity.MainActivity" />
        </activity>
        <activity
            android:name="co.bandicoot.ztrader.activity.ManagePairsActivity"
            android:label="@string/pairs"
            android:screenOrientation="portrait" >
        </activity>
    </application>

</manifest>

解决方案

I wrote it as a comment but I'm adding it here to. From link :

android:name

The name of the Service subclass that implements the service. This should be a fully qualified class name (such as, "com.example.project.RoomService"). However, as a shorthand, if the first character of the name is a period (for example, ".RoomService"), it is appended to the package name specified in the element.

So try and change your service to :

 <service android:name=".KillNotificationService" >
    </service>

这篇关于SecurityException异常:&QUOT;无法启动活动的意图和QUOT;用一个简单的startActivity时,的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆