Android 权限统计

Android 权限统计,第1张

<uses-permission

android:name="${applicationId}permissionJPUSH_MESSAGE"

android:protectionLevel="signature" /> 激光推送

<uses-permission android:name="androidpermissionINTERNET" /> 网络

<uses-permission android:name="androidpermissionCALL_PHONE" /> 打电话

<uses-permission android:name="androidpermissionWRITE_EXTERNAL_STORAGE" />存储

<uses-permission android:name="androidpermissionREAD_EXTERNAL_STORAGE" />存储

<uses-permission android:name="androidpermissionMOUNT_UNMOUNT_FILESYSTEMS" />这是在sd卡内创建和删除文件权限,添加该权限和

<uses-permission android:name="androidpermissionACCESS_WIFI_STATE" />允许程序访问Wi-Fi网络状态信息

<uses-permission android:name="androidpermissionACCESS_NETWORK_STATE" />获取网络信息状态,如当前的网络连接是否有效

<uses-permission android:name="androidpermissionREAD_PHONE_STATE" />访问电话状态

<uses-permission android:name="androidpermissionACCESS_COARSE_LOCATION" />允许一个程序访问CellID或WiFi热点来获取粗略的位置

<uses-permission android:name="androidpermissionRESTART_PACKAGES" />允许程序重新启动其他程序

<uses-permission android:name="androidpermissionCHANGE_WIFI_STATE" />改变WiFi状态

<uses-permission android:name="androidpermissionGET_TASKS" />允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等

<uses-permission android:name="androidpermissionRECORD_AUDIO" />允许程序录制音频

<uses-permission android:name="androidpermissionMODIFY_AUDIO_SETTINGS" />允许程序修改全局音频设置

<uses-permission android:name="androidpermissionRECEIVE_BOOT_COMPLETED" /> 允许程序开机自动运行

<uses-permission android:name="androidpermissionRECEIVE_USER_PRESENT" />屏幕常亮

<uses-permission android:name="androidpermissionWRITE_SETTINGS" />读写系统设置

<uses-permission android:name="androidpermissionSYSTEM_ALERT_WINDOW" /> 允许一个程序打开窗口使用 TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层

<uses-permission android:name="androidpermissionACCESS_FINE_LOCATION" />获取精确位置

<uses-permission android:name="androidpermissionACCESS_LOCATION_EXTRA_COMMANDS" />访问定位额外命令

<uses-permission android:name="androidpermissionCHANGE_NETWORK_STATE" />改变网络状态

<uses-permission android:name="androidpermissionREAD_LOGS" />读取系统日志

<uses-permission android:name="androidpermissionSET_DEBUG_APP" />设置调试程序

<uses-permission android:name="androidpermissionGET_ACCOUNTS" />访问账户Gmail列表

<uses-permission android:name="androidpermissionUSE_CREDENTIALS" />使用证书

<uses-permission android:name="androidpermissionMANAGE_ACCOUNTS" />管理账户

<uses-permission android:name="androidpermissionMANAGE_DOCUMENTS" />允许一个应用程序来管理文档的访问,通常是一个文档选择器部分

<uses-permission android:name="androidpermissionREAL_GET_TASKS" />允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等

<uses-permission android:name="androidpermissionDISABLE_KEYGUARD" />允许程序禁用键盘锁

<uses-permission android:name="androidpermissionCAMERA" />请求访问使用照相设备

<uses-permission android:name="androidpermissionFLASHLIGHT" />使用闪光灯

照相设备并自动对焦拍照

<uses-feature android:name="androidhardwarecamera" />

<uses-feature android:name="androidhardwarecameraautofocus" />

很多时候我们都需要实时监听网络状态,当网络状态发生变化之后立即通知程序进行不同的 *** 作。

监听广播的两种方式:

(1)在AndroidManifestxml配置文件中声明

<receiver android:name="NetworkConnectChangedReceiver" >

<intent-filter>

<action android:name="androidnetconnCONNECTIVITY_CHANGE" />

<action android:name="androidnetwifiWIFI_STATE_CHANGED" />

<action android:name="androidnetwifiSTATE_CHANGE" />

</intent-filter>

</receiver>1234567

(2)在代码中注册

IntentFilter filter = new IntentFilter(); filteraddAction(WifiManagerWIFI_STATE_CHANGED_ACTION); filteraddAction(WifiManagerNETWORK_STATE_CHANGED_ACTION); filteraddAction(ConnectivityManagerCONNECTIVITY_ACTION);

registerReceiver(new NetworkConnectChangedReceiver(), filter);12345

接下来创建实时监听网络连接与断开状态变化的BroadcastReceiver对象,我们需要继承androidcontentBroadcastReceiver,并实现其onReceive方法,下面我们就创建一个名为NetworkConnectChangedReceiver广播接收者,看一下具体的实现代码,由于代码写得很详细,就不一一解释了

package compernetworkconnectdome;import androidcontentBroadcastReceiver;import androidcontentContext;import androidcontentIntent;import androidnetConnectivityManager;import androidnetNetworkInfo;import androidnetwifiWifiManager;import androidosParcelable;import androidutilLog;public class NetworkConnectChangedReceiver extends BroadcastReceiver {

private String getConnectionType(int type) {

String connType = ""; if (type == ConnectivityManagerTYPE_MOBILE) {

connType = "3G网络数据";

} else if (type == ConnectivityManagerTYPE_WIFI) {

connType = "WIFI网络";

} return connType;

} @Override

public void onReceive(Context context, Intent intent) { if (WifiManagerWIFI_STATE_CHANGED_ACTIONequals(intentgetAction())) {// 监听wifi的打开与关闭,与wifi的连接无关

int wifiState = intentgetIntExtra(WifiManagerEXTRA_WIFI_STATE, 0);

Loge("TAG", "wifiState:" + wifiState); switch (wifiState) { case WifiManagerWIFI_STATE_DISABLED: break; case WifiManagerWIFI_STATE_DISABLING: break;

}

} // 监听wifi的连接状态即是否连上了一个有效无线路由

if (WifiManagerNETWORK_STATE_CHANGED_ACTIONequals(intentgetAction())) {

Parcelable parcelableExtra = intent

getParcelableExtra(WifiManagerEXTRA_NETWORK_INFO); if (null != parcelableExtra) { // 获取联网状态的NetWorkInfo对象

NetworkInfo networkInfo = (NetworkInfo) parcelableExtra; //获取的State对象则代表着连接成功与否等状态

NetworkInfoState state = networkInfogetState(); //判断网络是否已经连接

boolean isConnected = state == NetworkInfoStateCONNECTED;

Loge("TAG", "isConnected:" + isConnected); if (isConnected) {

} else {

}

}

} // 监听网络连接,包括wifi和移动数据的打开和关闭,以及连接上可用的连接都会接到监听

if (ConnectivityManagerCONNECTIVITY_ACTIONequals(intentgetAction())) { //获取联网状态的NetworkInfo对象

NetworkInfo info = intent

getParcelableExtra(ConnectivityManagerEXTRA_NETWORK_INFO); if (info != null) { //如果当前的网络连接成功并且网络连接可用

if (NetworkInfoStateCONNECTED == infogetState() && infoisAvailable()) { if (infogetType() == ConnectivityManagerTYPE_WIFI

|| infogetType() == ConnectivityManagerTYPE_MOBILE) {

Logi("TAG", getConnectionType(infogetType()) + "连上");

}

} else {

Logi("TAG", getConnectionType(infogetType()) + "断开");

}

}

}

}

}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

在onReceive方法里面,我们可以获取从广播而来的Intent中的数据,这包含很多有用的信息,其中

ConnectivityManager : 主要管理和网络连接相关的 *** 作

WifiManager: 管理和wifi相关的信息

TelephonyManager: 管理和手机、运营商等的相关信息

NetworkInfo类包含了对wifi和mobile两种网络模式连接的详细描述,通过getState()方法获取的State对象,代表着连接成功与否的状态。

最后记得添加权限:

<uses-permission android:name="androidpermissionaccess_wifi_state" /><uses-permission android:name="androidpermissionaccess_network_state" />

android的后台运行在很多service,它们在系统启动时被SystemServer开启,支持系统的正常工作

比如MountService监听是否有SD卡安装及移除,ClipboardService提供剪切板功能,PackageManagerService提供软件包的安装移除及查看等 等,应用程序可以通过系统提供的Manager接口来访问这些Service提供的数据。

getSystemService是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。

使用getSystemService()获取系统服务,需要注意的是,总是使用上下文:

获取网络状态:

Android应用里经常使用到网络速度的显示,特别是文件下载和视频缓冲的时候。用到的是TrafficStats类,就是每隔一段时间去读取网速:

private void showNetSpeed() {

long nowTotalRxBytes = getTotalRxBytes();

long nowTimeStamp = SystemcurrentTimeMillis();

long speed = ((nowTotalRxBytes - lastTotalRxBytes)  1000 / (nowTimeStamp - lastTimeStamp));//毫秒转换

lastTimeStamp = nowTimeStamp;

lastTotalRxBytes = nowTotalRxBytes;

Message msg = mHandlerobtainMessage();

msgwhat = 100;

msgobj = StringvalueOf(speed) + " kb/s";

mHandlersendMessage(msg);//更新界面

}

package comshanghaizhidamtraderutil;

import androidappAlertDialog;

import androidappAlertDialogBuilder;

import androidcontentComponentName;

import androidcontentContext;

import androidcontentDialogInterface;

import androidcontentIntent;

import androidnetConnectivityManager;

import androidnetNetworkInfo;

public class InterentConnection {

Context context;

public InterentConnection(Context context)

{

thiscontext=context;

}

public boolean isConn()

{

boolean bisConnFlag=false;

ConnectivityManager conManager = (ConnectivityManager)contextgetSystemService(ContextCONNECTIVITY_SERVICE);

NetworkInfo network = conManagergetActiveNetworkInfo();

if(network!=null){

bisConnFlag=conManagergetActiveNetworkInfo()isAvailable();

}

return bisConnFlag;

}

public void setNetworkMethod(){

//提示对话框

AlertDialogBuilder builder=new Builder(context);

buildersetTitle("网络设置提示")setMessage("网络连接不可用,是否进行设置(取消则退出程序)")setPositiveButton("设置", new DialogInterfaceOnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Intent intent=null;

//判断手机系统的版本 即API大于10 就是30或以上版本

if(androidosBuildVERSIONSDK_INT>10){

intent = new Intent(androidproviderSettingsACTION_WIRELESS_SETTINGS);

}else{

intent = new Intent();

ComponentName component = new ComponentName("comandroidsettings","comandroidsettingsWirelessSettings");

intentsetComponent(component);

intentsetAction("androidintentactionVIEW");

}

contextstartActivity(intent);

dialogdismiss();

}

})setNegativeButton("取消", new DialogInterfaceOnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialogdismiss();

Systemexit(0);

}

})show();

}

}

以上就是关于Android 权限统计全部的内容,包括:Android 权限统计、android wifi正在连接的状态广播、android之getSystemService介绍等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9284605.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存