Android中怎樣做到自己定義的廣播僅僅能有指定的app接收

來源:互聯網
上載者:User

標籤:lis   receive   dma   sni   receiver   oid   朋友   action   imp   

今天沒吊事。又去面試了,詳細哪家公司就不說了,由於我在之前的blog中註明了那些家公司的名字,結果人家給我私信說我泄露他們的題目。好吧,我錯了。。。

事實上當我們已經在工作的時候。我們能夠在空暇的時間去面一面,由於面試有非常多優點的:

第一點:你知道這個公司的詳細地址了,以後和朋友說的時候也是有話題的

第二點:這點非常重要。看看其它公司的面試題(如今有的公司還在採用筆試題這個環節。真心無語了。題目全是從網上找的,非常沒有意思。所以我僅僅要見到有筆試題的一律pass,個人感覺面到如今,阿里和滴滴還是不錯的。他們會問你他們在項目中遇到的詳細問題,問你該怎麼解決,這樣的答案就不確定,考你的是經驗)


上面說了非常多。以下進入正題吧:

題目:Android中怎樣做到自己定義的廣播僅僅能有指定的app接收

思路:事實上我當時第一次想到的答案應該是給廣播加入訪問許可權,可是我之前弄過給Activity的訪問加入過許可權,所以這裡不確定對不正確,可是我感覺Android中的四大組件應該一樣吧。擦,結果被我蒙對了。

哈哈~~


我們在使用Android中的API形式,或者使用adb命令都能夠在外部開啟一個應用的Activity/Service,以及發送一個廣播。所以這個對於一個應用來說是非常不安全的。即許可權是一種保護機制。


解決思路:

事實上沒啥技術可言的,就是Android中能夠自己定義許可權的,對於四大組件的訪問加上一層保護,不多說了,直接上代碼:


發送廣播:

package com.tt.test;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;public class Main extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        ((Button)findViewById(R.id.button)).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {   Intent i = new Intent("COM.MESSAGE");   i.addCategory("receiver");   i.putExtra("message", "haha");   sendOrderedBroadcast(i, "xvtian.gai.receiver");}});    }}
AndroidManifest.xml:

<uses-permission android:name="xvtian.gai.receiver" ></uses-permission>  <permission android:protectionLevel="normal" android:name="xvtian.gai.receiver"></permission>

接收廣播:

package com.tt.receiver;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class Receiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Log.d("TAG", "receiver intent:" + intent.toString());}}
AndroidManifest.xml

<uses-permission android:name="xvtian.gai.receiver" ></uses-permission>
<receiver android:name=".Receiver" android:permission="xvtian.gai.receivers">       <intent-filter>         <action android:name="COM.MESSAGE" />         <category android:name="receiver" />       </intent-filter></receiver>


簡單吧,沒不論什麼技術可言。同理我們能夠對其它的組件進行許可權保護(可能用的比較多的是對Activity訪問加入許可權),當然我一般開發的應用中貌似不會用到這些東東,可是假設想學習的話,應該去找那些做安全的應用,比方所360手機衛士。反編譯之後開啟他的AndroidManifest.xml檔案。你會震驚的,同一時候你也能夠學到非常多。哈哈~~


Demo:

http://download.csdn.net/detail/jiangwei0910410003/7973867



Android中怎樣做到自己定義的廣播僅僅能有指定的app接收

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.