<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介绍等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)