android 怎么读取在androidmanifest.xml中配置xml文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 怎么读取在androidmanifest.xml中配置xml文件相关的知识,希望对你有一定的参考价值。

参考技术A 一、关于androidManifest.xml
AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)
二、AndroidManifest.xml结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

<?xmlversion="1.0"encoding="utf-8"?>
<manifest>
<application>
<activity>
<intent-filter>
<action/>
<category/>
</intent-filter>
</activity>
<activity-alias>
<intent-filter></intent-filter>
<meta-data/>
</activity-alias>
<service>
<intent-filter></intent-filter>
<meta-data/>
</service>
<receiver>
<intent-filter></intent-filter>
<meta-data/>
</receiver>
<provider>
<grant-uri-permission/>
<meta-data/>
</provider>
<uses-library/>
</application>
<uses-permission/>
<permission/>
<permission-tree/>
<permission-group/>
<instrumentation/>
<uses-sdk/>
<uses-configuration/>
<uses-feature/>
<supports-screens/>
</manifest>

三、各个节点的详细介绍
上面就是整个am(androidManifest).xml的结构,下面以外向内开始阐述~~
1、第一层(<Manifest>):(属性)
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.woody.test"
android:sharedUserId="string"
android:sharedUserLabel="string resource"
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
</manifest>
A、xmlns:android
定义android命名空间,一般为http://schemas.android.com/apk/res/android,这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。

B、package
指定本应用内java主程序包的包名,它也是一个应用进程的默认名称本回答被提问者采纳
参考技术B 一、关于AndroidManifest.xml
AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)
二、AndroidManifest.xml结构

<?xmlversion="1.0"encoding="utf-8"?>
<manifest>
<application>
<activity>
<intent-filter>
<action/>
<category/>
</intent-filter>
</activity>
<activity-alias>
<intent-filter></intent-filter>
<meta-data/>
</activity-alias>
<service>
<intent-filter></intent-filter>
<meta-data/>
</service>
<receiver>
<intent-filter></intent-filter>
<meta-data/>
</receiver>
<provider>
<grant-uri-permission/>
<meta-data/>
</provider>
<uses-library/>
</application>
<uses-permission/>
<permission/>
<permission-tree/>
<permission-group/>
<instrumentation/>
<uses-sdk/>
<uses-configuration/>
<uses-feature/>
<supports-screens/>
</manifest>

三、各个节点的详细介绍
上面就是整个am(androidManifest).xml的结构,下面以外向内开始阐述~~
1、第一层(<Manifest>):(属性)
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.woody.test"
android:sharedUserId="string"
android:sharedUserLabel="string resource"
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
</manifest>
A、xmlns:android
定义android命名空间,一般为http://schemas.android.com/apk/res/android,这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。

B、package
指定本应用内java主程序包的包名,它也是一个应用进程的默认名称

套接字权限 - android清单

【中文标题】套接字权限 - android清单【英文标题】:Permission for sockets - android manifest 【发布时间】:2019-10-28 03:45:21 【问题描述】:

我制作了一个简单的测试应用程序,用于使用 java amqp lib (implementation 'com.rabbitmq:amqp-client:5.7.1') 读取 RabbitMQ 队列。

但是由于 Android 权限(套接字),我在连接到我的兔子服务器时遇到了问题

这是错误信息:

W/System.err:java.net.SocketException:套接字失败:EPERM(不允许操作)

我尝试将android.permission.INTERNET 添加到清单中,但没有成功。这是它的样子:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.androidwebsocket">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

我错过了什么?

编辑

根据要求,这里是完整的错误堆栈跟踪:https://pastebin.com/WAh2B4rP

以及触发此错误的代码:

ConnectionFactory factory = new ConnectionFactory();
factory.setUsername("myuser");
factory.setPassword("mypass");
factory.setVirtualHost("/");
factory.setHost("myhost.io");
factory.setPort(5672);

connection = factory.newConnection(); //Error triggers here
channel = connection.createChannel();

【问题讨论】:

我建议您编辑您的问题并提供完整的堆栈跟踪以及触发崩溃的代码。 @CommonsWare 完成 你是在后台线程上做这项工作吗? @CommonsWare 是的。起初我确实在 ui 线程中使用它,但这引发了另一个异常。 (我认为是 ConnectionOnMainThreadException 或类似的东西) 【参考方案1】:

我不见了

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

应该提到连接必须在后台线程中运行,否则 android 会阻止它。

还有:

按照中的建议从模拟器中卸载应用程序 java.net.SocketException: socket failed: EPERM (Operation not permitted)

【讨论】:

以上是关于android 怎么读取在androidmanifest.xml中配置xml文件的主要内容,如果未能解决你的问题,请参考以下文章

套接字权限 - android清单

android的label标签 默认是灰色的,怎么改成别的颜色或者图片呢?

在 Android 上为 PhoneGap App 更改应用程序主题(使用 phonegap Build)

Android安全机制

android怎么用流 读取云端图片

指定 Android 库版本代码/名称