了解 Android R:最新版本中的新功能和改進

一、可變的屏幕刷新率

在 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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:06
下一篇 2024-12-12 12:06

相關推薦

  • Android ViewPager和ScrollView滑動衝突問題

    Android開發中,ViewPager和ScrollView是兩個常用的控制項。但是當它們同時使用時,可能會發生滑動衝突的問題。本文將從多個方面介紹解決Android ViewPa…

    編程 2025-04-28
  • Android如何點擊其他區域收起軟鍵盤

    在Android應用中,當輸入框獲取焦點彈出軟鍵盤後,我們希望能夠點擊其他區域使軟鍵盤消失,以提升用戶體驗。本篇文章將說明如何實現這一功能。 一、獲取焦點並顯示軟鍵盤 在Andro…

    編程 2025-04-28
  • Android Studio HUD 實現指南

    本文將會以實例來詳細闡述如何在 Android Studio 中使用 HUD 功能實現菊花等待指示器的效果。 一、引入依賴庫 首先,我們需要在 build.gradle 文件中引入…

    編程 2025-04-27
  • Android和Vue3混合開發方案

    本文將介紹如何將Android和Vue3結合起來進行混合開發,以及其中的優勢和注意事項。 一、環境搭建 在進行混合開發之前,需要搭建好相應的開發環境。首先需要安裝 Android …

    編程 2025-04-27
  • Android Java Utils 可以如何提高你的開發效率

    Android Java Utils 是一款提供了一系列方便實用的工具類的 Java 庫,可以幫助開發者更加高效地進行 Android 開發,提高開發效率。本文將從以下幾個方面對 …

    編程 2025-04-27
  • Android JUnit測試完成程序自動退出決方法

    對於一些Android JUnit測試的開發人員來說,程序自動退出是一個經常面臨的困擾。下面從多個方面給出解決方法。 一、檢查測試代碼 首先,我們應該仔細檢查我們的測試代碼,確保它…

    編程 2025-04-25
  • Android Activity啟動流程

    一、Activity概述 Android應用程序是由許多Activity組成的。一個Activity代表一個屏幕上的窗口。用戶與應用程序交互時,Activity會接收用戶的輸入並處…

    編程 2025-04-25
  • Android單元測試詳解

    一、單元測試概述 單元測試是指對軟體中的最小可測試單元進行檢查和驗證。在Android開發中,單元測試是非常重要的一環,可以保證代碼的質量、穩定性以及可維護性。 在Android開…

    編程 2025-04-25
  • Android WebView載入本地HTML

    一、介紹 Android WebView是一個內置的瀏覽器,它允許開發人員在應用中嵌入網頁。使用WebView可以輕鬆地在應用程序中顯示本地或遠程的HTML內容。本篇文章將重點講述…

    編程 2025-04-24
  • Android Wakelock詳解

    一、什麼是Android Wakelock? 在Android應用開發中,Wakelock被廣泛應用於保持屏幕或CPU處於喚醒狀態,以便應用程序可以繼續執行後台任務,直到任務完成。…

    編程 2025-04-24

發表回復

登錄後才能評論