2015-04-02 12 views
0

AndroidJavaException:java.lang.SecurityException:需要NFC權限:用戶10379或當前進程都沒有android.permission.NFC。Unity使用單元格.jar Android NFC

我的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.Company.PluginsNFC" android:versionName="1.0" android:versionCode="1"> 
     <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" /> 

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

     <application android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false"> 

     <activity android:name="com.unity3d.player.UnityPlayerProxyActivity" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" > 
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" /> 
      <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> 
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" /> 
     </activity> 

     <activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" > 
     </activity> 

     <activity android:name="com.unity3d.player.UnityPlayerNativeActivity" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" > 
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" /> 
      <meta-data android:name="android.app.lib_name" android:value="unity" /> 
     </activity> 

     <activity android:name="com.unity3d.player.VideoPlayer" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" > 
     </activity> 

     <activity android:name="com.unity.eg.NFC.UnityNFC" android:label="@string/app_name" > 

      <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_tech_filter" /> 
     </activity> 


     </application> 
     <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="19" /> 
</manifest> 

我找了很久也找不到那裏的問題是

代碼:

public boolean IsUseNFC() { 

     this.mNfcAdapter = NfcAdapter.getDefaultAdapter(this.activity); 

     if(this.mNfcAdapter == null) { 
      this.activity.finish(); 
      return false; 
     } 

     if(!this.mNfcAdapter.isEnabled()) { 
      this.activity.finish(); 
      return false; 
     } 

    this.mNfcAdapter.setNdefPushMessageCallback(this, this.activity); 

    return true; 
} 

[錯誤] NfcAdapter.setNdefPushMessageCallback (this,this);

回答

0

如錯誤消息所示,您沒有爲您的應用程序請求NFC權限。您需要添加

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

在應用程序mainfest中的<application ... />標記之前的某處。

+0

謝謝,但只是複製並粘貼XML顯示不完整。 重新複製並粘貼XML。 – eggkouun 2015-04-02 08:01:40

+0

@eggkouun如果使用權限在那裏,你不應該得到這樣的例外。你在哪裏叫'IsUseNFC()'? – 2015-04-02 10:55:34

+0

@eggkouun另外,你是否檢查過生成的APK實際請求權限? – 2015-04-02 10:56:26