Android 中在有序廣播中添加自定義權(quán)限的實(shí)例
Android 中在有序廣播中添加自定義權(quán)限的實(shí)例
前言;
有序廣播說(shuō)明:
有序廣播因?yàn)橐幚硐⒌奶幚斫Y(jié)果,所以要復(fù)雜一些。
* sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras);
如果只是想讓廣播可以按優(yōu)先級(jí)來(lái)收取,并不在意處理的結(jié)果,可以用下面的版本:
* sendOrderedBroadcast(Intent intent, String receiverPermission);
同樣,在多用戶環(huán)境下,也可以選擇給哪個(gè)用戶發(fā)廣播:
* sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras);
首先我們要在AndroidManifest.xml中自定義一個(gè)權(quán)限,格式參考系統(tǒng)自帶的權(quán)限,Android.permission.XXXXX,只要是xxx.peimission.XXXXXX就行,如果不按照這個(gè)格式,那么這個(gè)權(quán)限可能沒法使用。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lsj.broadcasttest">
<span style="color:#FF0000;"> <permission
android:name="test.permission.TEST"
android:protectionLevel="normal"
></permission></span>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
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>
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="20">
<action android:name="hahaha" />
</intent-filter>
</receiver>
<receiver
android:name=".MyReceiver2"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="19">
<action android:name="hahaha" />
</intent-filter>
</receiver>
</application>
<span style="color:#FF0000;"> <uses-permission android:name="test.permission.TEST"/></span>
</manifest>
然后使用sendOrderedBroadcast(intent,"test.permission.TEST");就可以發(fā)送有序廣播了,當(dāng)然發(fā)送廣播之前還要指定一下接受者的優(yōu)先級(jí),優(yōu)先級(jí)越高,android:priority指定的數(shù)字就越大。取值的范圍是:-1000~1000這個(gè)就不詳細(xì)敘述了。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button send= (Button) findViewById(R.id.send);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setAction("hahaha");
intent.putExtra("msg","一個(gè)簡(jiǎn)單的消息");
sendOrderedBroadcast(intent,"test.permission.TEST");
}
});
}
}
第一個(gè)BroadcastReceiver在接收到廣播的時(shí)候,如果想要添加一些自己的東西進(jìn)去,可以先創(chuàng)建一個(gè)Bundle對(duì)象,并且存入數(shù)據(jù)。
然后通過setResultExtras(bundle),把這個(gè)bundle添加到原來(lái)的消息中,
ublic class MyReceiver extends BroadcastReceiver {
public MyReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"接收到的Intent的Action為:"+intent.getAction()+"\n消息內(nèi)容是:"+intent.getStringExtra("msg"),Toast.LENGTH_LONG).show();
Bundle bundle=new Bundle();
bundle.putString("first","第一個(gè)BroadCast存入的消息!");
setResultExtras(bundle);
}
}
下一個(gè)BroadcastReceiver通過getResultExtras可以將信息提取出來(lái)。
ublic class MyReceiver2 extends BroadcastReceiver {
public MyReceiver2() {
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO: This method is called when the BroadcastReceiver is receiving
Bundle bundle=getResultExtras(true);
String first=bundle.getString("first");
Toast.makeText(context,"第一個(gè)BroadCast存入的消息為:"+first,Toast.LENGTH_LONG).show();
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Android判斷是否有拍照權(quán)限的實(shí)例代碼
- Android掃描二維碼時(shí)出現(xiàn)用戶禁止權(quán)限報(bào)錯(cuò)問題解決辦法
- Android判斷用戶是否允許了攝像頭權(quán)限實(shí)例代碼
- Android無(wú)需申請(qǐng)權(quán)限撥打電話的兩種方式
- Android.permission.MODIFY_PHONE_STATE權(quán)限問題解決辦法
- 詳解Android權(quán)限管理之Android 6.0運(yùn)行時(shí)權(quán)限及解決辦法
- Android權(quán)限管理之Permission權(quán)限機(jī)制及使用詳解
- Android6.0動(dòng)態(tài)申請(qǐng)權(quán)限所遇到的問題小結(jié)
- Android 中的危險(xiǎn)權(quán)限詳細(xì)整理
相關(guān)文章
Android自定義View實(shí)現(xiàn)水面上漲效果
這篇文章給大家介紹了利用Android自定義View實(shí)現(xiàn)水面上漲效果,對(duì)大家日常開發(fā)很有幫助,有需要的朋友們可以參考借鑒。2016-09-09
Android Jetpack Compose無(wú)限加載列表
大家好,本篇文章主要講的是Android Jetpack Compose無(wú)限加載列表,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
Android基于OpenCV實(shí)現(xiàn)圖像金字塔
圖像金字塔是圖像中多尺度表達(dá)的一種,最主要用于圖像的分割,是一種以多分辨率來(lái)解釋圖像的有效但概念簡(jiǎn)單的結(jié)構(gòu)。本文講解Android基于OpenCV實(shí)現(xiàn)圖像金字塔的步驟2021-06-06
Android中搜索圖標(biāo)和文字居中的EditText實(shí)例
本篇文章主要介紹了Android中搜索圖標(biāo)和文字居中的EditText實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-06-06
Android 實(shí)現(xiàn)仿支付寶的密碼均分輸入框
這篇文章主要介紹了Android 實(shí)現(xiàn)仿支付寶的密碼均分輸入框的相關(guān)資料,需要的朋友可以參考下2017-06-06
Android實(shí)現(xiàn)拖動(dòng)小球跟隨手指移動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)拖動(dòng)小球跟隨手指移動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
WindowManagerService服務(wù)是如何以堆棧的形式來(lái)組織窗口
我們知道,在Android系統(tǒng)中,Activity是以堆棧的形式組織在ActivityManagerService服務(wù)中的;在本文中,我們就詳細(xì)分析WindowManagerService服務(wù)是如何以堆棧的形式來(lái)組織窗口的2013-01-01
Android使用Canvas對(duì)象實(shí)現(xiàn)刮刮樂效果
這篇文章主要介紹了Android使用Canvas對(duì)象實(shí)現(xiàn)刮刮樂效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04

