2014-09-15 2 views
0

Я занимаюсь разработкой NFC на Android, и я ударил кирпичную стену. Я запускаю приложение, и он немедленно терпит неудачу с «К сожалению, ..... перестала работать».SecurityException Требуется разрешение NFC

Некоторые быстрые поисковые запросы показали, что мне нужно предоставить разрешение в манифесте. Я сделал это, но вот, я все равно получаю такую ​​же ошибку!

Вот начало моего манифеста:

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

    <uses-permission android:name="android.permission.NFC" /> 
    <uses-sdk android:minSdkVersion="10"/> 
    <uses-feature android:name="android.hardware.nfc" android:required="true" /> 

    <activity 
     android:name=".MainActivity" 
    <!-- rest of the file ---> 

И выход в LogCat:

java.lang.RuntimeException: Unable to resume activity {za.co.fnb.ms.nfcreader/za.co.fnb.ms.nfcreader.MainActivity}: java.lang.SecurityException: NFC permission required: Neither user 10253 nor current process has android.permission.NFC. 

Что я здесь делаю неправильно?

+3

Я думаю, что вы должны объявить разрешение использования в верхней части манифеста вне тега приложения. – Opiatefuchs

ответ

0

Добавьте их к деятельности, которые вы используете НФК:

<activity 
     android:name="com.example.example.CLASSNAME" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.NoTitleBar"> 

     <intent-filter> 
      <action android:name="android.nfc.action.TAG_DISCOVERED"/> 
     </intent-filter> 

     <intent-filter> 
      <action android:name="android.nfc.action.NDEF_DISCOVERED"/> 
      <data android:mimeType="mime/type" /> 
     </intent-filter> 

     <meta-data android:name="android.nfc.action.TECH_DISCOVERED" 
      android:resource="@xml/nfc_type"/> 

    </activity> 

А также вы должны определить разрешения до применения тега.

+0

Было несколько комментариев, Opiatefuchs был первым в комментариях, за которым последовал Бурак. Так как я могу только воздерживаться от комментариев и принимать ответы. Я принимаю это. Тем не менее, все были правильны. – Gerrie

+0

@ Gerrie Я не понял ваше разъяснение об этом согласен ?? Можете ли вы быть ясными? –

2

Раздел

<uses-permission android:name="android.permission.NFC" /> 
    <uses-sdk android:minSdkVersion="10"/> 
    <uses-feature android:name="android.hardware.nfc" android:required="true" /> 

должна быть за пределами вашего приложения тега.


Как

<uses-permission android:name="android.permission.NFC" /> 
<uses-sdk android:minSdkVersion="10"/> 
<uses-feature android:name="android.hardware.nfc" android:required="true" /> 
<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
... 

Read Structure of the Manifest File

1

<uses-permission>, <uses-sdk> и <uses-feature> идут вне<application> элемент:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.commonsware.android.jimmyb" 
    android:versionCode="1" 
    android:versionName="1.0"> 

    <uses-permission android:name="android.permission.NFC"/> 

    <uses-feature 
     android:name="android.hardware.nfc" 
     android:required="true"/> 

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

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/title_activity_main" 
      android:launchMode="singleTask"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 

       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
      <intent-filter android:label="@string/app_name"> 
       <action android:name="android.nfc.action.NDEF_DISCOVERED"/> 

       <data android:mimeType="vnd.secret/agent.man"/> 

       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

(from this sample project)

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