網站首頁 編程語言 正文
前序
格式
<meta-data android:name="weather" android:value="xxx"/>
什么場景需要使用?
使用第三方SDK,需要在APP應用內使用別的APP的整合包,如使用微信登錄、某某地圖等。
一、在代碼中獲取元數據
在java代碼中,獲取元數據信息的步驟分為下列三步:
- 調用getPackageManager方法獲得當前應用的包管理器;
- 調用包管理器的getActivityInfo方法獲得當前活動的信息對象;
- 活動信息對象的metaData是Bundle包裹類型,調用包裹對象的getString即可獲得指定名稱的參數值。
例:從清單文件中獲取元數據并顯示到屏幕上
清單文件
<activity android:name=".MetaDataActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="weather" android:value="xxx"/> </activity>
xml文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/tv_meta" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
java類
public class MetaDataActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_meta_data);
TextView tv_meta = findViewById(R.id.tv_meta);
//獲取應用包管理器
PackageManager pm = getPackageManager();
try {
//從應用包管理器中獲取當前的活動信息
ActivityInfo info = pm.getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
//獲取活動附加的元數據信息
Bundle bundle = info.metaData;
String weather = bundle.getString("weather");
tv_meta.setText(weather);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
}
運行結果
二、給應用頁面注冊快捷方式
元數據不僅能傳遞簡單的字符串參數,還能傳送更復雜的資源數據,如支付寶的快捷式菜單。
利用元數據配置快捷菜單
元數據的meta-data標簽除了前面的name屬性和value屬性,還擁有resource屬性,該屬性可指定一個XML文件,表示元數據想要的復雜信息保存于XML數據之中。
利用元數據配置快捷菜單的步驟如下:
- 在res/values/strings.xml添加各個菜單項名稱的字符串配置
- 創建res/xml/shortcuts.xml,在該文件中填入各組菜單項的快捷方式定義。
- 給activity節點注冊元數據的快捷菜單配置。
例:長按應用出現快捷菜單
清單文件AndroidManifest.xml
<activity android:name=".ActStartActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts"/> </activity>
新建shortcuts.xml文件用于配置快捷菜單
<resources xmlns:android="http://schemas.android.com/apk/res/android"> <shortcut android:shortcutId="first" android:enabled="true" android:icon="@mipmap/ic_launcher" android:shortcutLongLabel="@string/first_long" android:shortcutShortLabel="@string/first_short"> <!--文字太長則顯示shotLabel ↑--> <!--點擊選項跳轉到的頁面 ↓--> <intent android:action="android.intent.action.VIEW" android:targetPackage="com.example.chapter2" android:targetClass="com.example.chapter2.ActStartActivity"/> <categories android:name="android.shortcut.conversation"/> </shortcut> </resources>
運行結果:長按出現快捷菜單
原文鏈接:https://blog.csdn.net/Tir_zhang/article/details/126956205
- 上一篇:獲取C++變量類型的簡單方法_C 語言
- 下一篇:C++中的函數返回值問題_C 語言
相關推薦
- 2022-04-03 Python實現對相同數據分箱的小技巧分享_python
- 2022-04-15 ASP.NET?Core托管模型CreateDefaultBuilder()方法_基礎應用
- 2022-02-14 jquery-選擇器、篩選器、樣式操作、文本操作、屬性操作、文檔處理
- 2023-03-26 WPF使用觸發器需要注意優先級問題解決_C#教程
- 2024-04-07 MyBatis批量插入的五種方式(推薦MyBatis以集合方式批量新增)
- 2022-04-03 C++中的運算符重載詳解_C 語言
- 2022-11-17 一文講解如何獲取k8s容器里運行的jar包_云其它
- 2022-05-21 Python學習之包與模塊詳解_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支