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;