一、可變的屏幕刷新率
在 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