标签: device-admin

如何在android中禁用锁屏?

我将我的应用程序注册为设备管理员,具有相应的锁定屏幕权限.我可以访问锁定设备的方法,但无法禁用锁屏.

是否有可用于禁用锁定的API方法?

android lockscreen device-admin

5
推荐指数
1
解决办法
8302
查看次数

Android Lollipop成为设备管理员不起作用

我正在按照本指南了解如何让我的应用请求成为设备管理员.
这适用于任何带有任何手机的任何4.x安卓版本,但不适用于棒棒糖(我已尝试使用Nexus 5和Nexus 7).

Logcat鞋出现以下错误:

 *11-02 07:37:09.649: W/DeviceAdminAdd(10020): Cannot start ADD_DEVICE_ADMIN as a new task*  
Run Code Online (Sandbox Code Playgroud)

还有其他人遇到过Lollipop这个问题吗?可能是什么原因?
我已经浏览了指南的所有部分,并确保我的XML,清单,接收器等都是应有的(并且,它确实适用于我尝试过的任何其他版本的操作系统或手机).

如果重要的话,出于兼容性原因,我正在使用目标API = 17和min API = 14编译我的应用程序.


添加清单文件:

<?xml version='1.0' encoding='utf-8'?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.my.package"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="17" />

     <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
    <uses-permission android:name="com.mycompany.permission.NFProvider_WRITE" />
    <uses-permission android:name="com.mycompany.permission.NFProvider_READ" />
    <uses-permission android:name="android.permission.READ_LOGS" />

    <application
        android:name="com.mycompany.myapp.Application"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <receiver
            android:name="com.mycompany.myapp.NFAdminReceiver"
            android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/admin"/>
            <intent-filter> …
Run Code Online (Sandbox Code Playgroud)

android device-admin android-developer-api android-5.0-lollipop

5
推荐指数
1
解决办法
3190
查看次数

如何仅锁定设备管理员设置

我正在研究安全性应用程序。用户必须输入正确的密码才能卸载应用程序。我已获得应用中设备管理员的许可。但是,当用户尝试安装应用程序时,他/她可以通过停用设备管理员设置来卸载应用程序。

我想当用户激活设备管理员设置,然后应用在设备管理员上设置密码。卸载时,询问密码,然后用户显示设备管理员设置。

有可能吗 如果是的话,请建议我该怎么做,如果不是,请告诉我如何防止用户卸载应用程序。

security android device-admin

5
推荐指数
0
解决办法
112
查看次数

如何在设置Android中禁用应用程序的卸载按钮

我正在实施父母和孩子的应用程序

  1. 父母可以追踪自己的孩子
  2. 孩子无法卸载该应用程序。

我正在使用设备管理功能来实现此目的。

启用管理员后,我想禁用孩子应用程序中的卸载按钮

图片

这是我的代码。

MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private PolicyManager policyManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    policyManager = new PolicyManager(this);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
        case R.id.activate_admin:
            if (!policyManager.isAdminActive()) {
                Intent activateDeviceAdmin = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                activateDeviceAdmin.putExtra(DevicePolicyManager.ACTION_SET_NEW_PASSWORD,"abcdefgh");
                activateDeviceAdmin.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, policyManager.getAdminComponent());
                activateDeviceAdmin.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "After activating admin, you will be able to block application uninstallation.");

                startActivityForResult(activateDeviceAdmin,
                        PolicyManager.DPM_ACTIVATION_REQUEST_CODE);

            }
            break;
        case R.id.deactivate_admin:
            if (policyManager.isAdminActive())
                policyManager.disableAdmin(); …
Run Code Online (Sandbox Code Playgroud)

android device-admin

5
推荐指数
1
解决办法
224
查看次数

锁定android手机

我试图在用户按下按钮时以编程方式锁定设备.我知道我需要使用deviceAdminReciever并且我已经这样做了但是每当我运行它时我的应用程序都会崩溃

以下是我的清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.MyApp"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".MainActivity"
        android:permission="android.permission.BIND_DEVICE_ADMIN" >
        <meta-data
            android:name="android.app.device_admin"
            android:resource="@xml/device_admin_sample" />

        <intent-filter>
            <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
        </intent-filter>
    </receiver>
</application>

<uses-feature android:name="android.hardware.camera" />

</manifest>
Run Code Online (Sandbox Code Playgroud)

以下是我的java代码:

public class MainActivity extends DeviceAdminReceiver {

public static class MyActivity extends Activity {

    protected static final int ACTIVATION_REQUEST = 1;
    private ImageButton btn;

    private DevicePolicyManager mDPM;
    private ComponentName …
Run Code Online (Sandbox Code Playgroud)

android device-admin

4
推荐指数
2
解决办法
7514
查看次数

防止应用在Android中卸载

我想要的是

我希望在我的设置菜单中有一个简单的复选框,如果选中它将启用我的应用程序的设备管理,并将阻止我的应用程序被卸载.

取消选中该复选框将禁用"设备管理".

我的应用程序是关于安全性的,需要保护其免受卸载.我可以为此获得一个简单的解决方案吗?

PS - 我已经阅读了有关这方面的文档,但似乎无法使其正常工作.

android device-admin

4
推荐指数
2
解决办法
9924
查看次数

以编程方式停用 Android 中的设备管理员?

是否可以通过编程方式停用(第三方)设备管理员应用程序?

我能够使用 DevicePolicyManagergetActiveAdmins ()检索激活设备管理员的所有应用程序:

final DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
final List<ComponentName> adminList = dpm.getActiveAdmins();

for ( ComponentName app : adminList ) {
    Log.d(TAG, "App: ", app.getPackageName());
}
Run Code Online (Sandbox Code Playgroud)

但是,为了停用它们,我无法使用removeActiveAdmin(...),因为它不会删除不属于我自己的应用程序的组件。

我正在考虑使用IntentstartActivity()来打开我想要停用的特定组件的设备管理员停用页面。是否可以?

android uninstallation android-intent device-admin

3
推荐指数
1
解决办法
7108
查看次数

如何以编程方式在Android中设置和取消设置锁定屏幕密码

我想以编程方式设置锁定屏幕密码,然后在执行循环时删除。我已经成功添加了设备管理,有人可以帮助我从应用程序本身设置和取消锁定屏幕密码。以下是我的设备管理工作代码

public class DevicePolicyDemoActivity extends Activity {
    static final String TAG = "DevicePolicyDemoActivity";
    static final int ACTIVATION_REQUEST = 47; // identifies our request id
    DevicePolicyManager devicePolicyManager;
    ComponentName demoDeviceAdmin;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Initialize Device Policy Manager service and our receiver class
        devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
        demoDeviceAdmin = new ComponentName(this, DemoDeviceAdminReceiver.class);
        Intent intent = new Intent(
                DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
                demoDeviceAdmin);
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                "Your boss told you to do this"); …
Run Code Online (Sandbox Code Playgroud)

android device-admin screen-lock

3
推荐指数
1
解决办法
2974
查看次数

Android DeviceAdminReceiver:从未收到过 onNetworkLogsAvailable 意图

更新

我注意到我实际上正在接收NETWORK_LOGS_AVAILABLE意图!问题是,收到它需要长时间(一个多小时?)。

有没有已知的方法可以增加接收这些事件的频率?

原始问题

我正在尝试处理现在可以onNetworkLogsAvailable在 DeviceAdminReceiver 应用程序中接收意图后读取的 DNS 事件。此功能从 Android 8.0 开始可用。

出于某种原因,即使我成功调用了该setNetworkLoggingEnabled方法,我也从未收到此意图。启用管理员后,我会收到该ACTION_DEVICE_ADMIN_ENABLED事件,但之后就没有其他内容了。

这是我启用网络日志记录的地方:

public class NetworkAdminReceiver extends DeviceAdminReceiver {
    @Override
    public void onEnabled(Context context, Intent intent) {
        DevicePolicyManager manager =
            (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
        if ( manager == null )
        {
            throw new IllegalStateException("Unable to get DevicePolicyManager");
        }
        if (manager.isDeviceOwnerApp(context.getPackageName())) {
            manager.setNetworkLoggingEnabled(getWho(context), true);
        }
        else
        {
            Toast.makeText(context, "This application is not device owner. DNS logging only works" +
                " when this …
Run Code Online (Sandbox Code Playgroud)

android device-admin

3
推荐指数
1
解决办法
726
查看次数

像Google Play一样无声地安装Android应用程序

我需要安装apk文件而不需要Google PlayStore之类的任何用户提示.我知道这个问题已被多次询问,但我仍未找到任何可解答的答案.我只是从我的SD卡安装应用程序,我尝试了以下方式,

public void getInstall(Context context) {


        File file = new File(Environment.getExternalStorageDirectory()
                + "/Demo.apk");
        Uri mPackageURI = Uri.fromFile(file);

        ApplicationManager appMgr = null;

        try {
            appMgr = new ApplicationManager(context);
        } catch (SecurityException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (NoSuchMethodException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        int installFlags = 1;
        PackageManager pm = context.getPackageManager();

        Method method = null;

        try {
            method = pm.getClass().getMethod(
                    "installPackage",
                    new Class[] { android.net.Uri.class,
                            android.content.pm.IPackageInstallObserver.class,
                            Integer.TYPE, String.class });
        } catch (SecurityException …
Run Code Online (Sandbox Code Playgroud)

android android-install-apk device-admin

-3
推荐指数
1
解决办法
5988
查看次数