[英]Intent for “Settings > Connected Devices > Connection Preferences” page
我想知道AdvancedConnectedDeviceDashboardFragment
的Intent
。 在 API 28 上,可以通過以下方式訪問此頁面: Settings
> Connected Devices
> Connection Preferences
。
此片段包含所有高級連接首選項(即藍牙、NFC、USB..)
手動交互的logcat:
D/SettingsActivity: Switching to fragment com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment
D/SubSettings: Launching fragment com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment
通過SubSettings
啟動它不起作用:
try {
Intent intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.SubSettings");
getActivity().startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.e(LOG_TAG, e.getMessage());
}
因為它沒有設置為exported="true"
它給了我:
(.SecurityException:權限被拒絕:從 ProcessRecord{75bbdbc 11970:com.acme.1060/u0a460} 開始 Intent { cmp=com.android.settings/.SubSettings(有附加功能)}從 uid 1000 導出
是否有機會通過帶有Intent
附加功能的父SettingsActivity
啟動它?
在瀏覽com.android.settings.Settings
,我找到了SettingsActivity
的名稱:
ConnectedDeviceDashboardActivity extends SettingsActivity
AdvancedConnectedDeviceActivity extends SettingsActivity
所以我寫了一個簡單的包裝方法,它仍然throws
:
public void showSettings(@NonNull String activityName) throws ActivityNotFoundException {
Intent intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.Settings$" + activityName);
getActivity().startActivity(intent);
}
它可以像這樣使用:
try {
showSettings("AdvancedConnectedDeviceActivity");
} catch (ActivityNotFoundException e) {
Log.e(LOG_TAG, e.getMessage());
}
有關要使用的更多SettingsActivity
名稱,請參閱Settings.java
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.