第一种方法:在onBind中进行验证(permission验证)
首先在AndroidMenifest中声明所需权限
<permission android:name="com.example.test1.permission.ACCESS_BOOK_SERVICE"
android:protectionLevel="normal" />
<uses-permission android:name="com.example.test1.permission.ACCESS_BOOK_SERVICE" />
验证
@Override
public IBinder onBind(Intent intent) {
int check = checkCallingOrSelfPermission("com.ryg.chapter_2.permission.ACCESS_BOOK_SERVICE");
Log.d(TAG, "onbind check=" + check);
if (check == PackageManager.PERMISSION_DENIED) {
return null;
}
return mBinder;
}
第二种方法:在onTransact中进行验证(包名验证)
public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws RemoteException {
// 权限验证
int check = checkCallingOrSelfPermission("com.example.test1.permission.ACCESS_BOOK_SERVICE");
L.d("check:"+check);
if(check==PackageManager.PERMISSION_DENIED){
L.d("Binder 权限验证失败");
return false;
}
// 包名验证
String packageName=null;
String[] packages = getPackageManager().getPackagesForUid(getCallingUid());
if(packages!=null && packages.length>0){
packageName = packages[0];
}
if(!packageName.startsWith("com.example")){
L.d("包名验证失败");
return false;
}
return super.onTransact(code, data, reply, flags);
};
完毕!