1、打开/packages/apps/Nfc/src/com/android/nfc/beam/BeamManager.java
找到startBeamReceive、startBeamSend方法
public boolean startBeamReceive(Context context,HandoverDataParser.BluetoothHandoverData handoverData) {synchronized (mLock) {if (mBeamInProgress) {return false;} else {mBeamInProgress = true;}}//add codereturn false;add end............
}public boolean startBeamSend(Context context,HandoverDataParser.BluetoothHandoverData outgoingHandoverData,Uri[] uris, UserHandle userHandle) {synchronized (mLock) {if (mBeamInProgress) {return false;} else {mBeamInProgress = true;}}//add codereturn false;add end............
}
return false可以根据具体情况决定是否允许beam。
2、打开/packages/apps/Settings/src/com/android/settings/nfc/AndroidBeamEnabler.java
找到AndroidBeamEnabler方法,注释掉:
mBeamDisallowedBySystem = RestrictedLockUtilsInternal.hasBaseUserRestriction(context,
UserManager.DISALLOW_OUTGOING_BEAM, UserHandle.myUserId());
public AndroidBeamEnabler(Context context, RestrictedPreference preference) {super(context);mPreference = preference;//add codemBeamDisallowedBySystem=true;//add end//rem code//mBeamDisallowedBySystem = RestrictedLockUtilsInternal.hasBaseUserRestriction(context,// UserManager.DISALLOW_OUTGOING_BEAM, UserHandle.myUserId());//rem endif (!isNfcAvailable()) { mPreference.setEnabled(false);return;}if (mBeamDisallowedBySystem) {mPreference.setEnabled(false);}}