精华内容
下载资源
问答
  • 当时我们使用了这个权限: android.permission.WRITE_EXTERNAL_STORAGE 写入外部存储 允许程序写入外部存储,如SD卡上写文件 然后打开APP模块权限配置:在这个权限上打勾 下面奉上所有的权限模块文档,...

    在uni-app中如何配置权限

    首先,我们先通过API了解,他对权限的需求,比如在上个帖子中   ===>>  对APP后台静默更新升级对文件管理和文件下载权限的需求

    当时我们使用了这个权限:

    android.permission.WRITE_EXTERNAL_STORAGE 写入外部存储 允许程序写入外部存储,如SD卡上写文件

    然后打开APP模块权限配置:在这个权限上打勾

    下面奉上所有的权限模块文档,便于查阅和搜索:

     

    权限 名称 描述
    android.permission.ACCESS_CHECKIN_PROPERTIES 访问登记属性 读取或写入登记check-in数据库属性表的权限
    android.permission.ACCESS_COARSE_LOCATION 获取错略位置 通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米
    android.permission.ACCESS_FINE_LOCATION 获取精确位置 通过GPS芯片接收卫星的定位信息,定位精度达10米以内
    android.permission.ACCESS_LOCATION_EXTRA_COMMANDS 访问定位额外命令 允许程序访问额外的定位提供者指令
    android.permission.ACCESS_MOCK_LOCATION 获取模拟定位信息 获取模拟定位信息,一般用于帮助开发者调试应用
    android.permission.ACCESS_NETWORK_STATE 获取网络状态 获取网络信息状态,如当前的网络连接是否有效
    android.permission.ACCESS_SURFACE_FLINGER 访问Surface Flinger Android平台上底层的图形显示支持,一般用于游戏或照相机预览界面和底层模式的屏幕截图
    android.permission.ACCESS_WIFI_STATE 获取WiFi状态 获取当前WiFi接入的状态以及WLAN热点的信息
    android.permission.ACCOUNT_MANAGER 账户管理 获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限
    android.permission.AUTHENTICATE_ACCOUNTS 验证账户 允许一个程序通过账户验证方式访问账户管理ACCOUNT_MANAGER相关信息
    android.permission.BATTERY_STATS 电量统计 获取电池电量统计信息
    android.permission.BIND_APPWIDGET 绑定小插件 允许一个程序告诉appWidget服务需要访问小插件的数据库,只有非常少的应用才用到此权限
    android.permission.BIND_DEVICE_ADMIN 绑定设备管理 请求系统管理员接收者receiver,只有系统才能使用
    android.permission.BIND_INPUT_METHOD 绑定输入法 请求InputMethodService服务,只有系统才能使用
    android.permission.BIND_REMOTEVIEWS 绑定RemoteView 必须通过RemoteViewsService服务来请求,只有系统才能用
    android.permission.BIND_WALLPAPER 绑定壁纸 必须通过WallpaperService服务来请求,只有系统才能用
    android.permission.BLUETOOTH 使用蓝牙 允许程序连接配对过的蓝牙设备
    android.permission.BLUETOOTH_ADMIN 蓝牙管理 允许程序进行发现和配对新的蓝牙设备
    android.permission.BRICK 变成砖头 能够禁用手机,非常危险,顾名思义就是让手机变成砖头
    android.permission.BROADCAST_PACKAGE_REMOVED 应用删除时广播 当一个应用在删除时触发一个广播
    android.permission.BROADCAST_SMS 收到短信时广播 当收到短信时触发一个广播
    android.permission.BROADCAST_STICKY 连续广播 允许一个程序收到广播后快速收到下一个广播
    android.permission.BROADCAST_WAP_PUSH WAP PUSH广播 WAP PUSH服务收到后触发一个广播
    android.permission.CALL_PHONE 拨打电话 允许程序从非系统拨号器里输入电话号码
    android.permission.CALL_PRIVILEGED 通话权限 允许程序拨打电话,替换系统的拨号器界面
    android.permission.CAMERA 拍照权限 允许访问摄像头进行拍照
    android.permission.CHANGE_COMPONENT_ENABLED_STATE 改变组件状态 改变组件是否启用状态
    android.permission.CHANGE_CONFIGURATION 改变配置 允许当前应用改变配置,如定位
    android.permission.CHANGE_NETWORK_STATE 改变网络状态 改变网络状态如是否能联网
    android.permission.CHANGE_WIFI_MULTICAST_STATE 改变WiFi多播状态 改变WiFi多播状态
    android.permission.CHANGE_WIFI_STATE 改变WiFi状态 改变WiFi状态
    android.permission.CLEAR_APP_CACHE 清除应用缓存 清除应用缓存
    android.permission.CLEAR_APP_USER_DATA 清除用户数据 清除应用的用户数据
    android.permission.CWJ_GROUP 底层访问权限 允许CWJ账户组访问底层信息
    android.permission.CELL_PHONE_MASTER_EX 手机优化大师扩展权限 手机优化大师扩展权限
    android.permission.CONTROL_LOCATION_UPDATES 控制定位更新 允许获得移动网络定位信息改变
    android.permission.DELETE_CACHE_FILES 删除缓存文件 允许应用删除缓存文件
    android.permission.DELETE_PACKAGES 删除应用 允许程序删除应用
    android.permission.DEVICE_POWER 电源管理 允许访问底层电源管理
    android.permission.DIAGNOSTIC 应用诊断 允许程序到RW到诊断资源
    android.permission.DISABLE_KEYGUARD 禁用键盘锁 允许程序禁用键盘锁
    android.permission.DUMP 转存系统信息 允许程序获取系统dump信息从系统服务
    android.permission.EXPAND_STATUS_BAR 状态栏控制 允许程序扩展或收缩状态栏
    android.permission.FACTORY_TEST 工厂测试模式 允许程序运行工厂测试模式
    android.permission.FLASHLIGHT 使用闪光灯 允许访问闪光灯
    android.permission.FORCE_BACK 强制后退 允许程序强制使用back后退按键,无论Activity是否在顶层
    android.permission.GET_ACCOUNTS 访问账户Gmail列表 访问GMail账户列表
    android.permission.GET_PACKAGE_SIZE 获取应用大小 获取应用的文件大小
    android.permission.GET_TASKS 获取任务信息 允许程序获取当前或最近运行的应用
    android.permission.GLOBAL_SEARCH 允许全局搜索 允许程序使用全局搜索功能
    android.permission.HARDWARE_TEST 硬件测试 访问硬件辅助设备,用于硬件测试
    android.permission.INJECT_EVENTS 注射事件 允许访问本程序的底层事件,获取按键、轨迹球的事件流
    android.permission.INSTALL_LOCATION_PROVIDER 安装定位提供 安装定位提供
    android.permission.INSTALL_PACKAGES 安装应用程序 允许程序安装应用
    android.permission.INTERNAL_SYSTEM_WINDOW 内部系统窗口 允许程序打开内部窗口,不对第三方应用程序开放此权限
    android.permission.INTERNET 访问网络 访问网络连接,可能产生GPRS流量
    android.permission.KILL_BACKGROUND_PROCESSES 结束后台进程 允许程序调用killBackgroundProcesses(String).方法结束后台进程
    android.permission.MANAGE_ACCOUNTS 管理账户 允许程序管理AccountManager中的账户列表
    android.permission.MANAGE_APP_TOKENS 管理程序引用 管理创建、摧毁、Z轴顺序,仅用于系统
    android.permission.MTWEAK_USER 高级权限 允许mTweak用户访问高级系统权限
    android.permission.MTWEAK_FORUM 社区权限 允许使用mTweak社区权限
    android.permission.MASTER_CLEAR 软格式化 允许程序执行软格式化,删除系统配置信息
    android.permission.MODIFY_AUDIO_SETTINGS 修改声音设置 修改声音设置信息
    android.permission.MODIFY_PHONE_STATE 修改电话状态 修改电话状态,如飞行模式,但不包含替换系统拨号器界面
    android.permission.MOUNT_FORMAT_FILESYSTEMS 格式化文件系统 格式化可移动文件系统,比如格式化清空SD卡
    android.permission.MOUNT_UNMOUNT_FILESYSTEMS 挂载文件系统 挂载、反挂载外部文件系统
    android.permission.NFC 允许NFC通讯 允许程序执行NFC近距离通讯操作,用于移动支持
    android.permission.PERSISTENT_ACTIVITY 永久Activity 创建一个永久的Activity,该功能标记为将来将被移除
    android.permission.PROCESS_OUTGOING_CALLS 处理拨出电话 允许程序监视,修改或放弃播出电话
    android.permission.READ_CALENDAR 读取日程提醒 允许程序读取用户的日程信息
    android.permission.READ_CONTACTS 读取联系人 允许应用访问联系人通讯录信息
    android.permission.READ_FRAME_BUFFER 屏幕截图 读取帧缓存用于屏幕截图
    com.android.browser.permission.READ_HISTORY_BOOKMARKS 读取收藏夹和历史记录 读取浏览器收藏夹和历史记录
    android.permission.READ_INPUT_STATE 读取输入状态 读取当前键的输入状态,仅用于系统
    android.permission.READ_LOGS 读取系统日志 读取系统底层日志
    android.permission.READ_PHONE_STATE 读取电话状态 访问电话状态
    android.permission.READ_SMS 读取短信内容 读取短信内容
    android.permission.READ_SYNC_SETTINGS 读取同步设置 读取同步设置,读取Google在线同步设置
    android.permission.READ_SYNC_STATS 读取同步状态 读取同步状态,获得Google在线同步状态
    android.permission.REBOOT 重启设备 允许程序重新启动设备
    android.permission.RECEIVE_BOOT_COMPLETED 开机自动允许 允许程序开机自动运行
    android.permission.RECEIVE_MMS 接收彩信 接收彩信
    android.permission.RECEIVE_SMS 接收短信 接收短信
    android.permission.RECEIVE_WAP_PUSH 接收Wap Push 接收WAP PUSH信息
    android.permission.RECORD_AUDIO 录音 录制声音通过手机或耳机的麦克
    android.permission.REORDER_TASKS 排序系统任务 重新排序系统Z轴运行中的任务
    android.permission.RESTART_PACKAGES 结束系统任务 结束任务通过restartPackage(String)方法,该方式将在外来放弃
    android.permission.SEND_SMS 发送短信 发送短信
    android.permission.SET_ACTIVITY_WATCHER 设置Activity观察其 设置Activity观察器一般用于monkey测试
    com.android.alarm.permission.SET_ALARM 设置闹铃提醒 设置闹铃提醒
    android.permission.SET_ALWAYS_FINISH 设置总是退出 设置程序在后台是否总是退出
    android.permission.SET_ANIMATION_SCALE 设置动画缩放 设置全局动画缩放
    android.permission.SET_DEBUG_APP 设置调试程序 设置调试程序,一般用于开发
    android.permission.SET_ORIENTATION 设置屏幕方向 设置屏幕方向为横屏或标准方式显示,不用于普通应用
    android.permission.SET_PREFERRED_APPLICATIONS 设置应用参数 设置应用的参数,已不再工作具体查看addPackageToPreferred(String)介绍
    android.permission.SET_PROCESS_LIMIT 设置进程限制 允许程序设置最大的进程数量的限制
    android.permission.SET_TIME 设置系统时间 设置系统时间
    android.permission.SET_TIME_ZONE 设置系统时区 设置系统时区
    android.permission.SET_WALLPAPER 设置桌面壁纸 设置桌面壁纸
    android.permission.SET_WALLPAPER_HINTS 设置壁纸建议 设置壁纸建议
    android.permission.SIGNAL_PERSISTENT_PROCESSES 发送永久进程信号 发送一个永久的进程信号
    android.permission.STATUS_BAR 状态栏控制 允许程序打开、关闭、禁用状态栏
    android.permission.SUBSCRIBED_FEEDS_READ 访问订阅内容 访问订阅信息的数据库
    android.permission.SUBSCRIBED_FEEDS_WRITE 写入订阅内容 写入或修改订阅内容的数据库
    android.permission.SYSTEM_ALERT_WINDOW 显示系统窗口 显示系统窗口
    android.permission.UPDATE_DEVICE_STATS 更新设备状态 更新设备状态
    android.permission.USE_CREDENTIALS 使用证书 允许程序请求验证从AccountManager
    android.permission.USE_SIP 使用SIP视频 允许程序使用SIP视频服务
    android.permission.VIBRATE 使用振动 允许振动
    android.permission.WAKE_LOCK 唤醒锁定 允许程序在手机屏幕关闭后后台进程仍然运行
    android.permission.WRITE_APN_SETTINGS 写入GPRS接入点设置 写入网络GPRS接入点设置
    android.permission.WRITE_CALENDAR 写入日程提醒 写入日程,但不可读取
    android.permission.WRITE_CONTACTS 写入联系人 写入联系人,但不可读取
    android.permission.WRITE_EXTERNAL_STORAGE 写入外部存储 允许程序写入外部存储,如SD卡上写文件
    android.permission.WRITE_GSERVICES 写入Google地图数据 允许程序写入Google Map服务数据
    com.android.browser.permission.WRITE_HISTORY_BOOKMARKS 写入收藏夹和历史记录 写入浏览器历史记录或收藏夹,但不可读取
    android.permission.WRITE_SECURE_SETTINGS 读写系统敏感设置 允许程序读写系统安全敏感的设置项
    android.permission.WRITE_SETTINGS 读写系统设置 允许读写系统设置项
    android.permission.WRITE_SMS 编写短信 允许编写短信

     

     

    展开全文
  • 通过ACTION_USAGE_ACCESS_SETTINGS权限得到多少天已经使用的APP的包名,然后获取手机所有用户APP,剩下的APP就是多少天没有使用的APP。 3 ACTION_USAGE_ACCESS_SETTINGS权限申请 1)在AndroidManifest....

    1 需求

    找出手机多少天没有使用的所有APP

     

     

     

     

     

     

     

     

     

    2 思路

    通过 ACTION_USAGE_ACCESS_SETTINGS权限得到多少天已经使用的APP的包名,然后获取手机所有用户APP,剩下的APP就是多少天没有使用的APP。

     

     

     

     

     

     

     

     

    3 ACTION_USAGE_ACCESS_SETTINGS权限申请

    1)在AndroidManifest.xml文件里面定义权限

        <uses-permission
            android:name="android.permission.PACKAGE_USAGE_STATS"
            tools:ignore="ProtectedPermissions" />

     

    2) 声明权限后还再需要通过Intent启动方式申请,打开相应的界面,同意当前的APP权限。

                val intent = Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS)
                startActivityForResult(intent, REQUEST_SYSTEM_USAGE_ACCESS_CODE)

     

     

     

     

     

     

     

     

     

    4 判断是否获取ACTION_USAGE_ACCESS_SETTINGS权限

        /**
         * 判断是否已经获取 有权查看使用情况的应用程序 权限
         *
         * @param context
         * @return
         */
        public static boolean isStatAccessPermissionSet(Context context) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                try {
                    PackageManager packageManager = context.getPackageManager();
                    ApplicationInfo info = packageManager.getApplicationInfo(context.getPackageName(), 0);
                    AppOpsManager appOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
    //                appOpsManager.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, info.uid, info.packageName);
                    return appOpsManager.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, info.uid, info.packageName) == AppOpsManager.MODE_ALLOWED;
                } catch (Exception e) {
                    e.printStackTrace();
                    return false;
                }
            } else {
                return true;
            }
        }

     

        /**
         * 查看是存在查看使用情况的应用程序界面
         *
         * @return
         */
        public static boolean isNoOption(Context context) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                PackageManager packageManager = context.getPackageManager();
                Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
                List<ResolveInfo> list = new ArrayList<>();
                //进程间通讯有可能异常
                try {
                    list.addAll(packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY));
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return list.size() > 0;
            }
            return false;
        }
        /**
         * 权限检查
         */
        fun checkUsedPermission():Boolean {
            if(!isStatAccessPermissionSet(this) && isNoOption(this)) {
                return false
            } else {
                return true
            }
        }

     因为我们一开始是用startActivityForResult这种方式打开界面,我们可以在onActivityResult里面进行权限的相关判断再处理

     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
            super.onActivityResult(requestCode, resultCode, data)
            Log.i(TAG, "onActivityResult start requestCode is:" + requestCode)
            if (requestCode == REQUEST_SYSTEM_USAGE_ACCESS_CODE) {
                var result = checkUsedPermission()
                Log.i(TAG, "onActivityResult result is ${result}")
                if (result) {
                    init()
                } else {
                    //finish
                    Log.i(TAG, "has no ACTION_MANAGE_WRITE_SETTINGS");
                    ToastUtils.showShort(R.string.text_please_allow_permisson)
                    finish()
                }
            }
        }

     

     

     

     

     

    5 检测多久时间内使用了其它APP

     /**
             * 查询使用在多少小时使用了app
             */
            fun getRuningAppsNoContainSelf(context: Context, hour: Int): List<String> {
                val runingApps = ArrayList<String>()
                val sUsageStatsManager = context.getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager
                val endTime = System.currentTimeMillis()
                val beginTime = endTime - TimeUnit.HOURS.toMillis(hour.toLong())
                val event = UsageEvents.Event()
                val usageEvents = sUsageStatsManager.queryEvents(beginTime, endTime)
                while (usageEvents.hasNextEvent()) {
                    usageEvents.getNextEvent(event)
                    if (event.eventType == UsageEvents.Event.MOVE_TO_FOREGROUND) {
                        val pkg = event.packageName
                        LogUtil.i("获取使用过的应用", "pkg为${pkg}")
                        if (!TextUtils.isEmpty(pkg) && !CLEAN_NOT_CONTAIN_LIST.contains(pkg)) {
                            if (!runingApps.contains(pkg)) {
                                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                                }
                                runingApps.add(event.packageName)
                            }
                        }
                    }
                }
                return runingApps
            }

    比如是10天内,我们那个hour参数传递10 * 24

    展开全文
  • Android 使用代码设置系统时间

    千次阅读 2013-09-06 15:32:22
    看过其他的方法,感觉不方便,现贴出我的处理方法: 步骤为三步: 1、应用首先要申请获取root权限。代码如下:

    看过其他的方法,感觉不方便,现贴出我的处理方法:


    步骤为三步:

    1、应用首先要申请获取root权限。代码如下:

    /** 
    	 * 请求root权限
    	 * @return 应用程序是/否获取Root权限
    	 */
    	public static boolean requestRootPermission(String pkgCodePath) {
    	    Process process = null;
    	    DataOutputStream os = null;
    	    try {
    	        String cmd="chmod 777 " + pkgCodePath;
    	        process = Runtime.getRuntime().exec("su"); //切换到root帐号
    	        os = new DataOutputStream(process.getOutputStream());
    	        os.writeBytes(cmd + "\n");
    	        os.writeBytes("exit\n");
    	        os.flush();
    	        process.waitFor();
    	    } catch (Exception e) {
    	        return false;
    	    } finally {
    	        try {
    	            if (os != null) {
    	                os.close();
    	            }
    	            process.destroy();
    	        } catch (Exception e) {
    	        }
    	    }
    	    return true;
    	}
    注:pkgCodePath可以使用context的getPackageCodePath()方法获取。

    2、设置时区。代码如下:

    AlarmManager mAlarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    		mAlarmManager.setTimeZone("GMT+09:00");
    注:需要在AndroidManifest.xml文件中注明如下权限:<uses-permission android:name="android.permission.SET_TIME_ZONE"/>


    3、成功获取root权限后,并设置好时区后,便可进行时间设置。代码如下:

    /**
    	 * 设置系统时间
    	 * @param time 格式为“年月日.时分秒”,例如:20111209.121212
    	 */
    	public static boolean setTime(String time) {
    	    Process process = null;
    	    DataOutputStream os = null;
    	    try {
    			process = Runtime.getRuntime().exec("su");
    			os = new DataOutputStream(process.getOutputStream());
    			os.writeBytes("date -s " + time + "\n");
    			os.writeBytes("exit\n");
    	        os.flush();
    	        process.waitFor();
    		} catch (Exception e) {
    			return false;
    		} finally {
    			try {
    	            if (os != null) {
    	                os.close();
    	            }
    	            process.destroy();
    	        } catch (Exception e) {
    	        }
    		}
    	    return true;
    	}


    So,   that's cool!


    展开全文
  • 在应用开发时经常会有这样的...好了,现在就让我们一起来实现一个利用系统权限实现手机重启的示例吧。 一、实现 我们实现很简单,就是界面一个按钮,然后设置按钮的点击事情,在点击事件里完成手机重启操作。 1、布局
    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47687027
    

     在应用开发时经常会有这样的需求,如何在应用里用代码让手机重启,另外,我们知道在重启之后,我们的应用可以注册广播接收者,以保证我们的应用会第一个将我们的服务开启起来,这样我们的代码就可以第一个接收到接收短信的广播事件。好了,现在就让我们一起来实现一个利用系统权限实现手机重启的示例吧。

    一、实现

    我们实现很简单,就是给界面一个按钮,然后设置按钮的点击事情,在点击事件里完成手机重启操作。

    1、布局文件

    布局文件很简单,就是放置了一个Button按钮,设置点击事件。

    具体代码如下:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:orientation="vertical"
        tools:context=".MainActivity" >
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="click"
            android:text="重启系统" />
        
    </LinearLayout>
    

    2、MainActivity

    这个类中就是实现了按钮的点击事件,在点击事件里实现重启手机的操作。

    package com.lyz.reboot.activity;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    	
    	public void click(View v){
    		Intent intent = new Intent();
    		intent.setAction(Intent.ACTION_REBOOT);
    		intent.putExtra("nowait", 1);
    		intent.putExtra("interval", 1);
    		intent.putExtra("window", 0);
    		sendBroadcast(intent);
    	}
    }
    

    3、授权文件AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.lyz.reboot.activity"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="18" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.lyz.reboot.activity.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    

    三、运行效果

    按照以上的实现,我们开始运行程序,然后点击按钮会报以下错误信息

    Caused by: java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.REBOOT from pid=1786, uid=10033
    这是因为Android系统里有很多限制性操作是不允许一般应用程序调用的,比如说:重启手机、关闭手机、修改系统时间、访问受限制的文件等。

    四、重新实现

    1、解决思路

    将我们的应用伪装成系统的应用

    2、实现步骤

    共享系统UID
    使用系统签名(匹配签名需要公钥和密钥两个文件生成keystore

    3、具体实现

    1)修改AndroidManifest.xml

    我们在AndroidManifest.xml文件的manifest节点中增加如下属性,来共享系统uid

    android:sharedUserId="android.uid.system"
    完整代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.lyz.reboot.activity"
        android:versionCode="1"
        android:versionName="1.0" 
        android:sharedUserId="android.uid.system">
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="18" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.lyz.reboot.activity.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    

    2)利用eclipse生成apk文件

    选中要生成apk文件的工程,右键导出项目到指定目录(具体步骤我在这里就不多说明了)。

    3)利用签名工具生成系统签名apk

    这里我用了一个工具来生成系统签名apk,大家可以到链接http://download.csdn.net/detail/l1028386804/9010161下载这个签名工具文件,下载后解压这个工具的目录结构如下图:

    我们将导出的apk文件放到上图所示的文件夹中

    如下图:

    然后我们打开cmd控制台,进入上图所示的目录中,按以下格式输入命令:

    java -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk
    其中input.apk为要签名的apk文件, output.apk为签名后输出的apk文件
    操作如下图所示:

    这里我输入的命令是:

    java -jar signapk.jar platform.x509.pem platform.pk8 reboot.apk new.apk
    命令执行后在当前目录下会生成一个带有系统签名的一个apk,这个apk文件为new.apk,

    如下图:

    这个new.apk文件就是我们最终生成的apk文件。

    4)安装apk文件

    首先,我们先要卸载的手机上原来安装的apk文件,然后,在命令行中输入如下命令安装new.apk文件

    adb install new.apk
    前提是命令行当前目录时new.apk文件所在的目录,具体操作见下图:

    如果安装后提示"Success"就是安装成功了。

    五、运行

    点击按钮运行效果为

    以上就实现了Android利用系统权限实现手机重启的功能。

    六、温馨提示

    大家可以到链接http://download.csdn.net/detail/l1028386804/9010161下载Android生成系统签名的文件。可以到链接http://download.csdn.net/detail/l1028386804/9010167下载Android利用系统权限实现手机重启的完整示例源代码

    本实例中,为了方面,我把一些文字直接写在了布局文件中和相关的类中,大家在真实的项目中要把这些文字写在string.xml文件中,在外部引用这些资源,切记,这是作为一个Android程序员最基本的开发常识和规范,我在这里只是为了方便直接写在了类和布局文件中。

    展开全文
  • usepermission 权限设置

    千次阅读 2014-06-19 14:43:22
    在安卓中需要对应用程序进行一系列的操作,获得相应的权限。 1. 该应用自身要有的权限 在中添加   2. 声明调用该应用的时候需要的权限 在中添加   Android系统常用的权限,需要哪些权限,以后会慢慢接触 权限 ...
  • Android提示用户获取相应手机权限

    万次阅读 2018-02-10 14:54:33
    将一些权限的申请放在了应用运行的时候去申请, 比如以往的开发中,开发人员只需要将需要的权限在清单文件中配置即可,安装后用户可以在设置中的应用信息中看到:XX应用以获取****权限。用户点击可以选择应用相应...
  • 动态的开启手机权限(获取位置权限)

    千次阅读 2016-12-07 09:34:47
    因此需要开发者去判断用户手机是否高于6.0,或者api23,如果高于的话就让用户自己去开启权限,代码包含一个封装的工具类.你也可以添加其他权限的信息.还有一个就是activity 工具类: public c
  • android 手机获取 root 权限

    千次阅读 2019-06-11 22:01:36
    为了让android 手机获取root权限,需要经历以下几个步骤。 手机解锁 现在大部分的手机在出厂时都锁定了bootloader,需要在官网上申请解锁,以小米为例,解锁网址。解锁的具体教程不在此详述,注意解锁需要小米账号和...
  • 2、请求BIND_ACCESSIBILITY_SERVICE权限,以确保只有系统可以绑定到它。如果这些项目中的任一项丢失,系统将忽略辅助功能服务。以下是一个示例声明: xmlns:android=...
  • Android手机6.0以上的运行权限想必大家都已经熟悉了,但有时候项目中要考虑6.0以下系统的权限问题,因为国产手机系统的特性,很多手机自带安全软件,使用相机或录音时候会询问权限,一般拒绝之后我们不好判断某些...
  • Android Studio 获取手机权限

    千次阅读 2019-10-15 17:07:05
    app的build.gradle文件添加一行: ... //获取权限,自动弹出确认框 implementation 'com.mylhyl:acp:1.2.0' } //获取权限 Acp.getInstance(this).request(new AcpOptions.Builder().setPermissions ...
  • 一、AndroidManifest.xml 所有权限列表: 访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permission.ACCESS_COARSE_...
  • 本文显示Android的权限大全和动态使用Android权限方法
  • android各大手机系统打开权限管理页面

    万次阅读 热门讨论 2016-08-17 10:15:23
    相信做过android的都知道,现在的手机系统五花八门,当我们去请求用户的权限的时候,总是会弹出是否允许的对话框。 而且用户一旦不小心点了拒绝,下次就不再询问了,而很多小白用户也不知道怎么去设置。这就导致了很...
  • 【uniapp】 读取手机通讯录权限

    千次阅读 2020-07-05 15:05:17
    现在很多APP,市场需求都需要读取我们手机上的相关权限,例如WX要读取通讯录,相册,照相机等权限,其他APP亦如此 但是在获得这些权限之前我们首先需要征得用户的统一之后才能读取 官方讲解: ...
  • Android设置权限问题

    千次阅读 2011-09-07 13:58:51
    Android应用程序在使用很多功能的时候必须在Mainifest.xml中声明所需的权限,否则无法运行。下面是一个Mainifest.xml文件的例子 xml version="1.0" encoding="utf-8"?>  manifest xmlns:a
  • Android 权限设置大全

    千次阅读 2012-03-05 14:49:19
    android权限大全 访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站...
  • 2020 - 小米手机之取完整Root权限

    千次阅读 2020-06-19 23:46:56
    2020 - 小米手机 之取 完整Root 权限 [ 纯属个人经验所得 ] 前言,由于工作需要一台有用完全root权限的安卓手机,正好手上有台放置很久的小米4手机. 之前的root过了,不知为何,root权限突然全部丢失了. 后来捣鼓刷了几...
  • 手机时间设置不能修改灰色禁用  解决大法   作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax   原因: 主要是可能手机是定制机,被商家故意禁用掉了...
  • 本文摘自《Delphi XE8 iOS与Android移动应用开发教程[完整中文版]》,该书是一本介绍使用delphi xe8开发iOS与Android...本节内容主要介绍使用Delphi XE系列工具开发Android应用时需要使用到的Android相关权限设置内容。
  • android之三星手机权限问题解决方案

    万次阅读 2017-09-16 12:02:10
    关于三星权限的问题,现在没试过不知到。
  • Android应用程序设置系统时间的方法

    千次阅读 2015-06-25 09:23:45
    Android SDK虽然提供了设置系统时间的方法SystemClock.setCurrentTimeMillis(),但是禁止普通应用程序设置系统时间,要调用该方法必须具有root权限并拥有系统签名。网上有一些文章介绍了Android应用程序实现设置系统...
  • Android项目:手机安全卫士(8)—— 管理员权限1 介绍关于手机防盗的功能,前面我们已经完成了一半,今天将要完成另一半,我们先来看看整体的功能描述:现在,我们还差两个功能: 远程删除数据 远程锁屏 需要说明...
  • Android 使用记录访问权限

    千次阅读 2017-03-28 13:50:27
    什么是使用记录访问权限呢?这是在Android5.0(Api level 21)新添加的,通过该权限我们可以查看设备上其它应用使用情况的统计信息等。 如何使用权限呢? 首先在manifest中添加: android:name="android....
  • 查看你的Android手机权限

    千次阅读 2013-08-08 13:19:22
    开发工具: 向应用发送 Linux 信号, 查阅敏感日志数据, 强制关闭后台应用, 修改安全系统设置, 测试对受保护存储空间的访问权限, 限制运行的进程个数, 检索系统内部状态, 启用应用调试 您的个人信息: 写入通话记录
  • ”,经了解才知道原来微博可以设置可见时间范围为“最近半年”的。不过这个最近半年可见的设置是需要微博会员才有权限设置,具体见微博客服的回复: 您可以在微博客户端我-设置-隐私设置-微博可见时间范围中进行...
  • 最近项目中在完善推送功能,需要进入APP时检测一下是否开启了推送权限,如果没有开启弹窗提醒,当用户点击弹窗时直接跳转到APP的通知设置界面,就像下面这种: 二、需求实现 1、检测是否开启通知权限 接到需求时一...
  • 在Android项目开发过程中,经常会碰到很多用户权限
  • 刷recovery.img获取手机root权限

    千次阅读 2014-06-21 22:01:35
    最近在做三星手机root权限获取方面的事情,

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,333
精华内容 39,333
关键字:

如何给手机设置使用时间权限