出于某种原因,我在为user-permission
和CALL_PHONE
添加READ_PHONE_STATE
时遇到了一个令人讨厌的错误。
Error:(16) Tag <uses-permission> attribute name has invalid character ' '.
在此行中出错:
<uses-permission android:name="android.permission.CALL_PHONE " />
删除PHONE和&#34;之间的空格时它仍然给我错误。
我尝试过清洁,重建和重新启动。 丢失的线条是红色的..
的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.daxrahusen.navigationdrawervideotutorial"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CALL_PHONE " />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<application
android:name="com.example.daxrahusen.navigationdrawervideotutorial.ParseApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.parse.APPLICATION_ID"
android:value="...Parse..." />
<meta-data
android:name="com.parse.CLIENT_KEY"
android:value="...Parse..." />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="...Google..." />
<activity
android:name="com.example.daxrahusen.navigationdrawervideotutorial.MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.daxrahusen.navigationdrawervideotutorial.login"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
</activity>
<!-- Include the AdActivity and InAppPurchaseActivity configChanges and themes. -->
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />
<activity
android:name="com.google.android.gms.ads.purchase.InAppPurchaseActivity"
android:theme="@style/Theme.IAPTheme" />
<meta-data
android:name="com.google.android.gms.wallet.api.enabled"
android:value="true" />
<receiver
android:name="com.google.android.gms.wallet.EnableWalletOptimizationReceiver"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.gms.wallet.ENABLE_WALLET_OPTIMIZATION" />
</intent-filter>
</receiver>
</application>
</manifest>
答案 0 :(得分:3)
进入APK的AndroidManifest.xml
文件不是您撰写的AndroidManifest.xml
。相反,通过所谓的清单合并过程,生成包含以下材料的AndroidManifest.xml
文件:
您在不同的资源集中撰写的所有清单(例如src/main/
,src/debug/
,src/release
)
您从工件存储库中提取的库模块或AAR提供的所有清单
build.gradle
中的设置,例如minSdkVersion
此生成的清单保存在build/intermediates/manifests/...
中,其中...
取决于您正在进行的构建类型(例如,debug
与release
)。< / p>
有时,当清单中存在错误时,问题在清单合并完成之后才会被捕获。然后,Android Studio会打开一个选项卡,显示生成的清单,指出问题所在。编辑此清单毫无意义,因为它会在每次构建时重新生成。相反,您需要转到包含有缺陷的XML的任何清单并修复该清单。
&#34;它不断设置空格&#34;建议您编辑生成的清单,而不是原始清单。
答案 1 :(得分:2)
你应该删除它末尾的空格字符
更改
<uses-permission android:name="android.permission.CALL_PHONE " />
到
<uses-permission android:name="android.permission.CALL_PHONE" />
答案 2 :(得分:1)
你应该删除清单中的CALL_PHONE之后的空格
<uses-permission android:name="android.permission.CALL_PHONE " />
使它像:
<uses-permission android:name="android.permission.CALL_PHONE" />
确保您在应用清单中执行此操作,而不是在生成的清单中,生成的清单不可编辑。