標籤: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接收