[Android Pro] android 4.4 Android原生权限管理:AppOps
时间: 2023-11-03 14:29:27 浏览: 66
Android 4.4引入了一个新的权限管理框架——AppOps,它可以让用户更加方便地管理应用程序的权限。
AppOps的全称是Application Operations,可以理解为“应用操作”。它的作用是让用户对应用程序的权限进行更加精细化的控制。在Android 4.4之前,用户只能通过安装应用程序时授予权限或者卸载应用程序来控制应用程序的权限。而AppOps可以让用户在安装应用程序之后,随时随地地对应用程序的权限进行控制和管理。
AppOps的实现方式是通过对应用程序的操作进行监控,当应用程序尝试执行某一个操作时,AppOps会检查该操作需要的权限是否已经被用户授权,如果没有被授权,则会弹出一个对话框提示用户进行授权。
在Android 4.4中,用户可以通过以下步骤进入AppOps界面:
1.打开系统设置界面。
2.选择“应用程序”。
3.选择某一个应用程序。
4.点击“权限”。
在“权限”界面中,用户可以看到该应用程序需要的所有权限,以及每一个权限的状态(已授权或未授权)。用户可以根据需求,随时修改应用程序的权限。
需要注意的是,AppOps只能控制应用程序的一些常规权限,例如访问联系人、发送短信等等。对于一些特殊权限,例如获取用户位置信息、使用摄像头等等,则需要用户在安装应用程序时授权。
相关问题
android appops 安装未知来源
在Android设备上安装未知来源的应用程序之前,您需要在设备的设置中启用“安装未知来源”的选项。以下是在Android设备上启用“安装未知来源”的步骤:
1. 打开设备的“设置”应用程序
2. 搜索“安全性和隐私”或“安全性”选项
3. 点击“安装未知来源”或“未知来源应用程序”
4. 在弹出的窗口中选择“允许”
启用后,您可以下载并安装未知来源的应用程序。请注意,安装未知来源的应用程序可能会导致设备被感染恶意软件或病毒,因此请确保您只从可信的来源下载应用程序。
android 6 上监听应用启动
在 Android 6.0 及以上版本中,由于权限管理的改变,需要动态请求权限才能监听应用启动。具体步骤如下:
1. 在 AndroidManifest.xml 文件中添加权限申请:
```
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" tools:ignore="ProtectedPermissions" />
```
2. 在代码中动态请求权限:
```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!hasPermission()) {
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
startActivity(intent);
}
}
private boolean hasPermission() {
AppOpsManager appOps = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE);
int mode = appOps.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, Process.myUid(), getPackageName());
return mode == AppOpsManager.MODE_ALLOWED;
}
```
3. 在服务中监听应用启动:
```java
public class AppService extends Service {
private UsageStatsManager mUsageStatsManager;
private String mLastPackageName;
private UsageStatsManager.OnUsageStatsChangeListener mListener = new UsageStatsManager.OnUsageStatsChangeListener() {
@Override
public void onUsageStatsChanged(String packageName, int userId, long lastTimeUsed) {
if (packageName.equals(mLastPackageName)) {
// 应用启动
}
mLastPackageName = packageName;
}
};
@Override
public void onCreate() {
super.onCreate();
mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
mUsageStatsManager.addOnUsageStatsChangeListener(mListener);
}
@Override
public void onDestroy() {
super.onDestroy();
mUsageStatsManager.removeOnUsageStatsChangeListener(mListener);
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
```
以上就是在 Android 6.0 及以上版本中监听应用启动的步骤。