android調用系統設置
① 如何調用Android系統程序詳細信息界面
調用Android系統「應用程序信息(Application Info)」界面「Android系統設置->應用程序->管理應用程序」列表下,列出了系統已安裝的應用程序。選擇其中一個程序,則進入「應用程序信息(Application Info)」界面。這個界面顯示了程序名稱、版本、存儲、許可權等信息,並有卸載、停止、清除緩存等按鈕,可謂功能不少。如果在編寫相關程序時(比如任務管理器)可以調用這個面板,自然提供了很大的方便。那麼如何實現呢?
在最新的Android SDK 2.3(API Level 9)中,提供了這樣的介面。在文檔路徑
docs/reference/android/provider/Settings.html#ACTION_APPLICATION_DETAILS_SETTINGS
下,有這樣的描述:
public static final String ACTION_APPLICATION_DETAILS_SETTINGS Since: API Level 9
Activity Action: Show screen of details about a particular application.
In some cases, a matching Activity may not exist, so ensure you safeguard against this.
Input: The Intent's data URI specifies the application package name to be shown, with the "package" scheme. That is "package:com.my.app".
Output: Nothing.
Constant Value: "android.settings.APPLICATION_DETAILS_SETTINGS"
就是說,我們只要以android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS作為Action;「package:應用程序的包名」作為URI,就可以用startActivity啟動應用程序信息界面了。代碼如下:
view plain
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts(SCHEME, packageName, null);
intent.setData(uri);
startActivity(intent);
但是,在Android 2.3之前的版本,並沒有公開相關的介面。
通過查看系統設置platform/packages/apps/Settings.git程序的源碼,可以發現應用程序信息界面為InstalledAppDetails。
在這里(2.1)還有這里(2.2),我們可以分別看到Android2.1和Android2.2的應用管理程序(ManageApplications.java)是如何啟動InstalledAppDetails的。
view plain
// utility method used to start sub activity
private void () {
// Create intent to start new activity
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClass(this, InstalledAppDetails.class);
intent.putExtra(APP_PKG_NAME, mCurrentPkgName);
// start new activity to display extended information
startActivityForResult(intent, INSTALLED_APP_DETAILS);
}
但是常量APP_PKG_NAME的定義並不相同。
2.2中定義為"pkg",2.1中定義為"com.android.settings.ApplicationPkgName"
那麼,對於2.1及以下版本,我們可以這樣調用InstalledAppDetails:
view plain
Intent i = new Intent(Intent.ACTION_VIEW);
i.setClassName("com.android.settings","com.android.settings.InstalledAppDetails");
i.putExtra("com.android.settings.ApplicationPkgName", packageName);
startActivity(i);
對於2.2,只需替換上面putExtra的第一個參數為"pkg"
綜上,通用的調用「應用程序信息」的代碼如下:
view plain
private static final String SCHEME = "package";
/**
* 調用系統InstalledAppDetails界面所需的Extra名稱(用於Android 2.1及之前版本)
*/
private static final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName";
/**
* 調用系統InstalledAppDetails界面所需的Extra名稱(用於Android 2.2)
*/
private static final String APP_PKG_NAME_22 = "pkg";
/**
* InstalledAppDetails所在包名
*/
private static final String APP_DETAILS_PACKAGE_NAME = "com.android.settings";
/**
* InstalledAppDetails類名
*/
private static final String APP_DETAILS_CLASS_NAME = "com.android.settings.InstalledAppDetails";
/**
* 調用系統InstalledAppDetails界面顯示已安裝應用程序的詳細信息。 對於Android 2.3(Api Level
* 9)以上,使用SDK提供的介面; 2.3以下,使用非公開的介面(查看InstalledAppDetails源碼)。
*
* @param context
*
* @param packageName
* 應用程序的包名
*/
public static void showInstalledAppDetails(Context context, String packageName) {
Intent intent = new Intent();
final int apiLevel = Build.VERSION.SDK_INT;
if (apiLevel >= 9) { // 2.3(ApiLevel 9)以上,使用SDK提供的介面
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts(SCHEME, packageName, null);
intent.setData(uri);
} else { // 2.3以下,使用非公開的介面(查看InstalledAppDetails源碼)
// 2.2和2.1中,InstalledAppDetails使用的APP_PKG_NAME不同。
final String appPkgName = (apiLevel == 8 ? APP_PKG_NAME_22
: APP_PKG_NAME_21);
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName(APP_DETAILS_PACKAGE_NAME,
APP_DETAILS_CLASS_NAME);
intent.putExtra(appPkgName, packageName);
}
context.startActivity(intent);
}
② android 怎麼調用系統亮度設置
調整手機亮度即可
1;一般的安卓手機在下拉菜單中可以看到【自動亮度】點擊打開,即可實現隨系統亮度的效果。
2;如果沒有下拉菜單,可以打開【設置】-【顯示】-【屏幕亮度】-【自動亮度】
③ 安卓程序代碼如何調用系統的鎖屏設置界面
可通過包名、類名進行跳轉顯示鎖屏設置界面
Intent intent = new Intent("/");
ComponentName cm = new ComponentName("com.android.settings","com.android.settings.ChooseLockGeneric");
intent.setComponent(cm);
startActivityForResult(intent, 0);
④ android應用程序調用系統設置該如何實現
android應用程序調用系統設置,通過Intent來調整到相應的系統設置頁面。系統設置有很多種,所以,傳入相應的action,跳轉調用相應的系統功能。
以下代碼:Intent intent = new Intent(action);
startActivity(intent);
比如,你要調用系統設置的輔助功能把action的值賦值為:"com.android.settings.AccessibilitySettings" , 然後當你點擊調用出就會跳轉到該功能設置。
一些常用的系統設置功能:
com.android.settings.DisplaySettings 顯示設置
com.android.settings.DockSettings 底座設置
com.android.settings.IccLockSettings SIM卡鎖定設置
com.android.settings.InstalledAppDetails 語言和鍵盤設置
⑤ 調用Android 系統自帶分享功能
1. 設置Intent的action為Intent.ACTION_SEND。
2. 把要分享的數據通過.putExtra()傳入intent。
3. 設置類型.setType()。
4.startActivity()。
系統會自動識別出能夠兼容接受這些數據,且類型相符合的 activity。如果這些選擇有多個,則把這些 activity 顯示給用戶進行選擇。
若要響應其他應用的分享,在AndroidManifest里設置。
5. 如果為intent調用了Intent.createChooser(),那麼 Android 總是會顯示可供選擇。這樣有一些好處:
即使用戶之前為這個 intent 設置了默認的 action,選擇界面還是會被顯示。
如果沒有匹配的程序,Android 會顯示系統信息。
我們可以指定選擇界面的標題。
⑥ Android調用系統相機實現拍照和視頻錄制
(1)申請許可權
(2)設置布局
這里做了一個簡單的布局:添加了一個按鈕和一個ImageView控制項用於顯示拍攝的圖像。
(3)為按鈕添加點擊事件監聽
點擊按鈕時,調用系統相機進行拍照,並在確定後將圖像顯示在ImageView控制項中。
(1)申請許可權
(2)設置布局
添加了一個按鈕和一個VideoView控制項用於顯示錄制的視頻。
(3)為按鈕添加點擊事件監聽
同前面一樣,點擊按鈕後調用系統相機進行錄制視頻,錄制完成後點擊確定即可將錄制的視頻顯示在VideoView控制項中。
對於Android11.0的版本,在調用系統相近進行視頻錄制的時候,即使在AndroidMenifest.xml中申請了CAMERA許可權,還是會在程序運行時報錯: Permission Denial , . .... .... with revoked permission android.permission.CAMERA
解決方法是在程序中動態申請許可權:
寫在最後:文章是在學習過程中做的學習筆記,同時與志同道合者分享,文章內容均經過我自己實驗證實可行,如有問題歡迎留言,很高興一起交流討論,共同進步!
⑦ 如何修改android系統設置
應用能夠配置Android系統的各種設置,這些設置的默認值都是由frameworks中的SettingsProvider從資料庫中讀取的frameworks/base/packages/SettingsProvider/res/values/defaults.xml這個文件就是用來存儲默認值的
Android 系統設置中的默認設置如下所示:
<integer name="def_screen_off_timeout">600000</integer>設置關屏超時時間的默認值
<integer name="def_screen_brightness">102</integer> 設置亮度的默認值
<bool name="def_install_non_market_apps">false</bool>設置是否允許安裝非Market應用程序的默認值
開機圖片:
android-logo-mask.png
android-logo-shine.png這兩個圖片一個在上一個在下
./out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes/assets/images/android-logo-shine.png
./frameworks/base/core/res/assets/images/android-logo-shine.png注意:如果源碼沒有make可以直接更改frameworks里的的圖片就可以了
然後直接make否則必須全更改並且不能make只能make firmwar
默認開機牆紙的位置:
default_wallpaper.jpg
./out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes/res/drawable/default_wallpaper.jpg
./frameworks/base/core/res/res/drawable/default_wallpaper.jpg
注意:這個設置和上面的一樣這倆個都不能更改文件名更改PC機器刪除硬體的文字kernel中
drivers/usb/gadget/f_mass_storage.c
fsg->vendor = "XXXXXXXXXXXXX";更改卷標:
bootable/recovery/etc/init.rc
setprop UserVolumeLabel "XXXXXXXXXXXXX"
直接打包修改屏幕鎖:
(1)frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<integer name="def_screen_off_timeout">60000</integer>
60000改成想要的時間如果是不鎖為-1(2)frameworks/policies/base/phone/com/android/internal/policy/impl/KeyguardViewMediator.java
private boolean mExternallyEnabled = true;
將其修改成false,這樣更改就不會再進入休眠狀態了設定初始化主頁:
package/app/Browser/res/values/String.xml
655行
後面的應該是書簽里的設定亮度0~255:
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
def_screen_brightness-->這個值初始化好像是100多音量:
frameworks/base/media/java/android/media/AudioManager.java
數組DEFAULT_STREAM_VOLUME第4個值(最大我設置到30但是還是差2格才到最大--默認是11
建議將數組里的所有的數值都設為最大就OK了)設置Google帳戶,左上角提示「正在設置RK2818SDK」,要求改成「正在設置W9」:
out argetproctsdkDemo oot 中default.prop文件第13行
ro.proct.model=rk2818sdk改為 ro.proct.model=W9錄音沒有小時顯示。要求增加:
(1)SoundRecorder.java中: private void updateTimerView()
把 String timeStr = String.format(mTimerFormat, time/60, time%60);
改為:long hour=time/3600;
String timeStr = String.format(mTimerFormat, hour, (time-hour*3600)/60, time%60);(2) esvalues中strings.xml改為:
<string name="timer_format"><xliff:g id="format">%02d:%02d:%02d</xliff:g></string>去掉Bluetooth:
(主界面->添加文件夾->Bluetooth received)
ic_launcher_folder_bluetooth.png(72*72):
在packagesappsBluetooth esdrawable-hdpi
解決方法:刪除out argetproctsdkDemosystemapp下的Bluetooth.apk充電鎖屏時圖片:
frameworksasecore es esdrawable-hdpi:ic_lock_idle_charging.png去掉鎖屏時顯示充電百分比在:
frameworksasecore es esvalues-zh-rCN中strings.xml 的lockscreen_plugged_in 括弧中的內容及括弧 !!去掉動態桌面背景選項:
packageswallpapersBasic 中AndroidManifest.xml的<service>這些,如星系注釋掉如下這些:
<service
android:label="@string/wallpaper_galaxy" android:name="com.android.wallpaper.galaxy.GalaxyWallpaper"
android:permission="android.permission.BIND_WALLPAPER">
<intent-filter>
<action android:name="android.service.wallpaper.WallpaperService" />
</intent-filter>
<meta-data android:name="android.service.wallpaper" android:resource="@xml/galaxy" />
</srvice>更改版本號:
build/core/Makefile
79行
RK_VER := xxx更改界面布局
位置:package/app/Launcher2/res/xml/default_workspace.xml
注意:adb shell 里當你點擊任意的一個apk的時候,在後台會輸出
I/ActivityManager(728): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.estrongs.android.pop/.view.FileExplorerActivity bnds=[294,373][393,478] }
I/WindowManager(728): Setting rotation to 1, animFlags=0
看上面「cmp=com.estrongs.android.pop」的部分就可以找到/前是包名/後面是類名-->這個是在default_workspace.xml裡面需要用到的
launcher:packageName="com.android.browser"
launcher:className="com.android.browser.BrowserActivity"如何將pdf類的文件放到桌面上
將自己製作的pdf幫助文檔放置到桌面上使客人可以直接點擊就瀏覽
String urlString = "/system/app/Nvsbl P4Dv2 English Manual.pdf";
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(urlString)),"application/pdf");
startActivity(intent);
finish();
解釋下:
首先將pdf文檔放到out/target/proct/sdkDemo/system/app下
將固定地址給出urlString,使用Intent
intent.setAction(android.content.Intent.ACTION_VIEW);啟動View
intent.setDataAndType(Uri.fromFile(new File(urlString)),"application/pdf");
application/pdf可以指定別的格式包括音頻,視頻,圖片等等但是沒有試過有需要可以試試
注意:這個方法很不到如果只放置一些圖片還可以但是如果放置文件比較大那麼打包出來的
system.img文件會很大也就是佔用本身的系統內存----->所以不推薦使用發現PIN解鎖界面出現5秒之後就會自動進入睡眠,之後將無法再次解鎖。目前解決方法:
修改文件 frameworkspolicies.java
將如下這行:
protected static final int AWAKE_INTERVAL_DEFAULT_MS = 5000;
修改為:protected static final int AWAKE_INTERVAL_DEFAULT_MS = 1000 * 60 * 5;