一、可變的屏幕刷新率
在 Android R 中,增加了對可變屏幕刷新率的支持,為了提高用戶的體驗和節省電量。
通過 WindowManager API 中添加了新的 API,應用可以查詢顯示器是否支持可變的刷新率,如果支持,應用可以請求不同的刷新率。例如,如果應用正在播放視頻,則可以請求高刷新率,如果應用主要是顯示靜止內容,可以請求低刷新率。顯示器會根據應用的請求調整刷新率,以達到更好的用戶體驗和能源效率。
Display.Mode mode = display.getMode();
if (mode.getPhysicalRefreshRate() >= 90) {
// If refresh rate is sufficiently high, switch to 90Hz refresh rate
mode = new Display.Mode(mode.getModeId(), 1080, 2340, 90);
display.requestMode(mode);
}
else {
// If refresh rate isn't good enough, switch to 60Hz refresh rate
mode = new Display.Mode(mode.getModeId(), 1080, 2340, 60);
display.requestMode(mode);
}
二、全新的許可權管理
在之前的版本中,應用開發者可以在應用安裝時就申請所有需要的許可權。然而這可能會導致用戶被迫授權一些他們不想給予的許可權,或者在必要時缺乏對許可權的掌控。在 Android R 中,全新的許可權管理功能可以授予用戶更多的控制權。
如果應用需要使用敏感許可權,如訪問位置或相機,應用將必須要經過用戶授權才能使用這些許可權。此外,Android R 引入了「一次性許可權」,這是一種一次性的,用完即銷毀的許可權,使得應用能夠獲得臨時訪問適當數據的許可權,但接下來不再需要這個許可權。
// 申請 ACCESS_FINE_LOCATION 許可權
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// 如果沒授權,那麼就需要申請授權
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.ACCESS_FINE_LOCATION)) {
// 給出提示信息,告訴用戶沒有這個許可權時 APP 不能正常使用
} else {
// 否則直接申請授權
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_LOCATION);
}
}
三、無限的無線連接
在 Android R 中,Google 引入了一種名為「連接感知」的新技術,它可以讓 Android 設備更好地管理多種無線連接的同時,提供了更好的連接質量和保障用戶隱私。
例如,當你正走在街上,Wi-Fi 信號強度正在不斷變化。如果你正在通過這些 Wi-Fi 網路進行數據傳輸,這可能會導致應用程序的延遲和停頓。 Android R 可以識別這些變化,並在連接更好的 Wi-Fi 網路時自動轉換到該連接。
ConnectivityManager cm = getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
.build();
cm.registerNetworkCallback(request, new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
// 在這裡處理網路變更的操作,例如:更新 WebView 連接
}
});
四、增強的隱私保護
Android R 中增強了隱私保護功能。例如,應用程序現在需要使用一個新的讀取外部存儲許可權,以訪問用戶外部存儲中的文件,這意味著應用程序不能更輕易地訪問用戶的個人數據。此外,Android R 還支持應用程序訪問私有區域中的共享文件。
Android R 還包括一個應用程序許可來限制應用於特定數據的訪問。例如,如果一個音頻應用需要訪問用戶電話狀態,這不再需要使用 READ_PHONE_STATE 許可權,但內部 API 可以通過使用應用程序許可權進行訪問。
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_PHONE_STATE)) {
// 給出提示信息,告訴用戶沒有這個許可權時音頻應用的功能可能會受限
} else {
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_PHONE_STATE},
MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);
}
}
else {
// 音頻應用可以直接訪問電話狀態
}
五、更好的企業設備管理
企業設備的安全性是個很大的話題,並且在 Android R 中得到了一些重大的改進。Android R 減少了許多攻擊點,例如,至少需要設備鎖來訪問企業資產和 Quick Settings 許可權。Android R 也支持針對企業定製的自定義設置、應用列表和網路管理。
Android R 通過增加 Admin API,使得企業可以對設備進行更好的管理。企業管理員可以限制工作個人數據的訪問,或在用戶退出企業時清空容器,這些都為企業設備管理提供了更多的選擇。
private static final String TAG = "PolicyManagerSample";
private DevicePolicyManager mDpm;
private ComponentName mProfileOwner;
public void createProfile(View view) {
Intent intent = new Intent();
intent.setAction(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE);
intent.putExtra(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME,
getPackageName());
intent.putExtra(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME,
new ComponentName(this, PolicyManagerReceiver.class));
startActivityForResult(intent, REQUEST_PROVISION_MANAGED_PROFILE);
}
public void enableCameras(View view) {
mDpm.setCameraDisabled(mProfileOwner, false);
Log.i(TAG, "Cameras enabled");
}
public void disableCameras(View view) {
mDpm.setCameraDisabled(mProfileOwner, true);
Log.i(TAG, "Cameras disabled");
}
總結
Android R 提供了許多新的功能和改進,以滿足不斷變化的用戶需求和進步的技術趨勢。其中一些功能包括可變的屏幕刷新率、全新的許可權管理、無線連接和隱私保護的增強。企業設備管理方面也得到了很大的改進。開發者和用戶都有了更好的體驗和保障。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/237687.html
微信掃一掃
支付寶掃一掃