2011-12-25 6 views
0

Привет я пытаюсь построить мой проект, но я получаю ошибку на следующиеандроид разрешения Java отказ Manifest.xml

ActivityManager: java.lang.SecurityException: Разрешение Отрицание: начиная Intent {акт = android.intent.action .MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10000000 cmp = com.my_app.app/.choose_language} из null (pid = -1, uid = -1) требуется null

Мой файл манифеста как указано ниже

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

    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.CALL_PHONE" /> 
    <uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" /> 


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

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:label="@string/app_name" 
      android:name=".Scan_AppActivity" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" > 

     </activity> 
     <activity 
      android:name=".nearby_exhibits" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" > 

     </activity> 
     <activity 
      android:label="@string/app_name" 
      android:name=".SegmentedRadioActivity" 
      android:theme="@android:style/Theme.Light" > 
     </activity> 
     <activity 
      android:label="@string/app_name" 
      android:name=".ds_main_page" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" > 

     </activity> 
     <activity 
      android:name=".my_scan" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" > 

     </activity> 
     <activity 
      android:name=".help_menu" 
      android:theme="@android:style/Theme.NoTitleBar" > 

     </activity> 
     <activity 
      android:name=".choose_language" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" > 
          <intent-filter > 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 

     </activity> 
     <activity 
      android:name=".splash_screen" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" > 

     </activity> 
     <activity 
      android:name=".register_screen" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" > 

     </activity> 
     <activity 
      android:name=".login" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" > 
     </activity> 
     <activity 
      android:name=".attraction_more_info" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" > 

     </activity> 
     <activity 
      android:name="chosen_my_scan_attraction" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" > 

     </activity> 
    </application> 

</manifest> 

, если я удаляю часть фильтра намерения и добавляю ее в мой всплеск sc reen, мое приложение начинает нормально, но при запуске кода на любой другой операции выдается ошибка выше. Кто-нибудь знает, почему это?

ответ

3

Часто, requires null в SecurityException означает, что компонент не экспортируется. Это не должно быть проблемой в вашем случае - операция автоматически экспортируется, когда она имеет <intent-filter>. Я бы определил, на какой активности в вашем приложении будет <intent-filter>, и выполните полную деинсталляцию приложения с вашего устройства/эмулятора, а затем переустановите его, чтобы узнать, помогает ли это.

BTW, обычные приложения SDK не могут содержать ACCESS_CHECKIN_PROPERTIES.

+0

Проницательный ответ @Commons. Как вам удалось найти информацию о 'require null', касающемся экспортированных действий? Я пытаюсь стать более осведомленным разработчиком Android, но я никогда бы не сделал такую ​​связь, если бы не прочитал ее из такого ответа, как SO. Кроме того, означает ли это, если «Активность» не включает «фильтры намерения», то это не может быть злонамеренно/скрыто вызвано другим приложением? –

+1

@Turbo: «Как вам удалось найти информацию о нулевом значении, связанном с экспортированными действиями?» - IIRC, Dianne Hackborn упомянул об этом в андроид-разработчике. «Кроме того, означает ли это, если в Activity не включены фильтры намерений, то это не может быть злонамеренно/скрыто вызвано другим приложением?» - существует свойство 'android: exported', которое контролирует, могут ли третьи стороны ссылаться на эту активность. Наличие '<намерения-фильтра>' устанавливает значение по умолчанию 'android: exported' в' true'; в противном случае значением по умолчанию является 'false'. – CommonsWare

+0

до тех пор, пока не включен ни один фильтр намерений, а тег 'android: exported' не установлен в значение' true', не должно ли другое приложение запускать чужие действия? –

Смежные вопросы