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

得到了我这个错误的实例为我的用户的一种4.0:抛出:SecurityException:“无法启动活动的意图”用一个简单的startActivity时

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

这里是我的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> 

任何想法?

编辑:这是我的完整清单。这里有什么不对吗?我正在查看SettingsActivity,它似乎没有任何可能需要额外权限的内容。

<?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> 
+0

也许您在清单中缺少一些权限?没有更多代码就无法获得其他任何东西。 – mt0s 2014-10-09 17:12:18

+0

你不需要任何权限就可以启动Activies吗? – zholmes1 2014-10-09 17:17:21

+0

这是真的,但在清单中有些问题,我只是在猜测。请发布清单文件中的所有代码。 – mt0s 2014-10-09 17:21:33

回答

0

我写它作为评论,但我在这里添加它。从link

的android:命名

实现了 服务的服务子类的名称。这应该是完全限定的类名(例如, “com.example.project.RoomService”)。但是,如果名称的第一个字符为句点(例如,“.RoomService”), (如果 它被附加到 元素中指定的包名称后面)。

所以试着改变你的服务:

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

好吧,我做了这个改变,我还没有看到再次崩溃......我暂时将此标记为现在的正确答案。 – zholmes1 2014-10-10 06:11:03

1

我认为它更可能是您的应用程序/ SettingsActivity已决定由startActivity被调用时进入后台/退出。是的,我知道堆栈跟踪显示它发生在UI线程上,所以Activity不应该在发生时完成,但支持库中似乎存在一些错误,这些错误不会处理Activity /片段生命周期很好是一些边缘案例。

我认为你的用户碰到了这些边缘情况之一。

+0

问题是无法重现问题,但仍然存在问题 – 2017-05-25 13:24:36

相关问题