AndroidMainfest.xml中的meta-data属性

本文详细介绍了如何在AndroidManifest.xml中声明元数据,并通过Java代码在运行时获取这些元数据值。具体步骤包括在XML文件中使用<meta-data>标签定义元数据,然后在Java代码中通过PackageManager获取ActivityInfo并读取对应的元数据。

这个属性平时比较少用,稍微记录一下:

1)AndroidMainfest.xml中声明如下

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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


            <meta-data
                android:name="sun"
                android:value="sunwinner"
                >
            </meta-data>

        </activity>

2)Java代码可以通过这种方式获取值:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        try{
            ActivityInfo activityInfo = MainActivity.this.getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
            String data = activityInfo.metaData.getString("sun");
            Log.d("sun","Test Value is ="+data);
        }catch (Exception e){
        }
    }

3)输出:

03-29 17:41:23.741 27172 27172 D sun     : Test Value is =sunwinner

 

AndroidManifest.xml 中声明对 `data` 文件夹的权限,由于 `data` 文件夹包含应用的私有数据,普通应用通常没有直接访问它的权限,一般需要系统级权限或者 `root` 权限。不过可以在 AndroidManifest.xml 中声明一些可能相关的权限,下面是具体介绍: #### 1. 声明读取外部存储权限 如果 `data` 文件夹相关的数据是存储在外部存储上,可声明读取外部存储的权限: ```xml <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ``` 对于 Android 10(API 级别 29)及以上版本,需要在 `application` 标签中添加 `requestLegacyExternalStorage` 属性: ```xml <application ... android:requestLegacyExternalStorage="true"> ... </application> ``` #### 2. 声明写入外部存储权限(如果需要写入操作) ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 需要注意,从 Android 10 开始,`WRITE_EXTERNAL_STORAGE` 权限被废弃,应使用 `MediaStore` API 来管理媒体文件。 #### 3. 系统级权限声明(如果应用是系统应用) 如果应用是系统应用,可声明系统级权限,例如: ```xml <uses-permission android:name="android.permission.ACCESS_ALL_DOWNLOADS" /> ``` 以下是一个完整的 AndroidManifest.xml 示例: ```xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.app"> <!-- 读取外部存储权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 写入外部存储权限(Android 10 之前) --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <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" android:requestLegacyExternalStorage="true"> <!-- Android 10 及以上需要 --> <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> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值