Вопрос:

Не удается разрешить символ '@ xml / device_admin'

java android xml android-screen-pinning

1089 просмотра

1 ответ

286 Репутация автора

Я пытаюсь реализовать закрепление экрана на устройстве Android 5.1. Я наткнулся на этот ответ , и при попытке добавить intent-filterк моему манифесту, я получаю эту ошибку: Cannot resolve symbol '@xml/device_admin'.

Я предполагаю, что это потому, xml/device_adminчто не существует, поэтому, если это так, где я могу его создать?

Мой манифест

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

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <receiver
            android:name=".MyDeviceAdminReceiver"
            android:label="@string/app_name"
            android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/device_admin" />

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

    </application>

</manifest>

Моя основная деятельность

package MY_PACKAGE;

import android.content.ComponentName;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.app.admin.*;

public class MainActivity extends AppCompatActivity {

    private WebView mWebView;
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ComponentName deviceAdmin = new ComponentName(this, MyDeviceAdminReceiver.class);
        DevicePolicyManager mDpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);

        mWebView = (WebView) findViewById(R.id.activity_main_webview);

        // Enable Javascript
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);

        mWebView.setWebViewClient(new WebViewClient());
        mWebView.loadUrl("my_website.com"); //Note that this is a placeholder website.

        if (mDpm.isDeviceOwnerApp(getPackageName())) {
            mDpm.setLockTaskPackages(deviceAdmin, new String[]{getPackageName()});
        }

        if (mDpm.isLockTaskPermitted(this.getPackageName()))
            startLockTask();

//        try {
//            Runtime.getRuntime().exec("dpm set-device-owner MY_PACKAGE/.MyDeviceAdminReceiver");
//        } catch (Exception e) {
//            Log.e(TAG, "device owner not set");
//            Log.e(TAG, e.toString());
//            e.printStackTrace();
//        }

        try {
            startLockTask();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onBackPressed() {
        if(mWebView.canGoBack()) {
            mWebView.goBack();
        } else {
            System.out.print("LOCKED IN PLACE!");
        }
    }



}
Автор: wanderer0810 Источник Размещён: 08.11.2017 11:48

Ответы (1)


3 плюса

2514 Репутация автора

Решение

Я предполагаю, что это потому, что xml / device_admin не существует, поэтому, если это так, где я могу его создать?

Создать папку в иерархии, application/src/main/res/xmlчтобы сохранить файл device_admin.xmlв этой папке XML

Структура device_admin.xmlфайла

<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-policies>
    <limit-password />
    <watch-login />
    <reset-password />
    <force-lock />
    <wipe-data />
    <expire-password />
    <encrypted-storage />
    <disable-camera />
  </uses-policies>
</device-admin>

Device_admin GuideLine

Автор: Dipali s. Размещён: 09.11.2017 06:21
Вопросы из категории :
32x32