java - 如何自动创建和启动梦想服务 android

标签 java android android-intent

我正在尝试启动一项梦想服务。目前,这是我的代码:

@SuppressLint("NewApi")
public class DreamLockService extends DreamService {

    private static final String TAG = "DreamLockService";
    public Utility utilObj = new Utility();

    //private Button btnExit;

    private Button btnlogin;
    private EditText lgPass;

    @Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        // Exit dream upon user touch
        setInteractive(true);
        // Hide system UI
        setFullscreen(true);
        // Set the dream layout
        setContentView(R.layout.lockservice);
        //setClickListener();
        Toast.makeText(this, "Lock Service Created", Toast.LENGTH_LONG).show();
    }

    //Use this for initial setup, such as calling setContentView().
    @Override
    public void onDreamingStarted() {
        super.onDreamingStarted();
        // Exit dream upon user touch
        setInteractive(true);
        // Hide system UI
        setFullscreen(true);
        // Set the dream layout
        setContentView(R.layout.lockservice);
        Toast.makeText(this, "Lock Service Created", Toast.LENGTH_LONG).show();
    }

    //Your dream has started, so you should begin animations or other behaviors here.
    public void onDreamingStopped()
    {
        super.onDreamingStopped();
    }

    //Use this to stop the things you started in onDreamingStarted().
    public void onDetachedFromWindow()
    {
        super.onDetachedFromWindow();
    }
}

我无法从其他 Activity 启动梦想服务。这是我使用的:

Intent tempLock = new Intent(MainActivity.this, DreamLockService.class);
//DreamLockService test = new DreamLockService();
startService(tempLock);

我不明白为什么它不起作用。如何从另一项 Activity 启动梦想服务?

最佳答案

要从我们自己的应用程序启动 Dream 服务,请尝试此操作。

    IBinder binder = ServiceManager.getService("dreams");

    Parcel data = Parcel.obtain();
    data.writeInterfaceToken("android.service.dreams.IDreamManager");
    Parcel reply = Parcel.obtain();
    try {
        if (binder != null)
            binder.transact(1, data,reply, Binder.FLAG_ONEWAY);
        else
            Log.e("TAG", "dreams service is not running");
    } catch (RemoteException e) {
        e.printStackTrace();
    } 

要使用此功能,您的应用程序应该是系统应用程序,并且应在 list 文件中具有 dream 权限,并在“设置”中启用 dream 设置。

我试过了,它有效。

关于java - 如何自动创建和启动梦想服务 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16547307/

相关文章:

java - 在 Ubuntu 中使用 Mono 生成文件的字节顺序标记

JAVA URI 不能为空 - 协助此功能

android - DownloadManager VS 自己的下载实现?

android - Jelly Bean webview 滚动不流畅

java - 将数据从一项 Activity 解析到另一项 Activity

android - NFC 前台调度不工作

java - Android 在 UI 线程上加载共享首选项

java - 我应该在 java 中读取或解析 YAML 文件吗

java - 代码风格 : "hiding" data types (Java)

android - 在 Android Studio 中扩展 xml 中的自定义 View 类时出错