有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java服务意图必须在配置google cloud messenger时明确

我正在尝试在我的应用程序中设置GCM(只是了解GCM服务)

到目前为止,我有一个基本的应用程序,它要做的就是注册和注销GCM

我一直在:

https://www.youtube.com/watch?v=rmzv716SYkQ

我遇到了一个关于Android L的问题

11-20 14:34:31.486 24902-24902/com.安卓.example E/AndroidRuntime: FATAL EXCEPTION: main
                                                                             Process: com.安卓.example, PID: 24902
                                                                             java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.google.安卓.c2dm.intent.REGISTER (has extras) }
                                                                                 at 安卓.app.ContextImpl.validateServiceIntent(ContextImpl.java:1720)
                                                                                 at 安卓.app.ContextImpl.startServiceCommon(ContextImpl.java:1749)
                                                                                 at 安卓.app.ContextImpl.startService(ContextImpl.java:1733)
                                                                                 at 安卓.content.ContextWrapper.startService(ContextWrapper.java:522)
                                                                                 at com.安卓.example.MainActivity.register(MainActivity.java:56)
                                                                                 at com.安卓.example.MainActivity$1.onClick(MainActivity.java:30)
                                                                                 at 安卓.view.View.performClick(View.java:4781)
                                                                                 at 安卓.view.View$PerformClick.run(View.java:19873)
                                                                                 at 安卓.os.Handler.handleCallback(Handler.java:739)
                                                                                 at 安卓.os.Handler.dispatchMessage(Handler.java:95)
                                                                                 at 安卓.os.Looper.loop(Looper.java:135)
                                                                                 at 安卓.app.ActivityThread.main(ActivityThread.java:5293)
                                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                                 at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                 at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
                                                                                 at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:699)

我已经看过了Google In-App billing, IllegalArgumentException: Service Intent must be explicit, after upgrading to Android L Dev Preview,但我真的不明白给出的答案是什么

我的代码如下:

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

    deactivate = (Button) findViewById(R.id.deactivate);
    activate = (Button) findViewById(R.id.activate);
    activate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            register(v);
        }
    });

    deactivate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            deregister(v);
        }
    });

}

private void deregister(View v) {
    Intent deregister = new Intent("com.google.安卓.c2dm.intent.UNREGISTER");
    deregister.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));
    startService(deregister);
}

public void register(View view) {
    Intent register = new Intent("com.google.安卓.c2dm.intent.REGISTER");
    register.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));
    register.putExtra("sender", "XXXXXXXXX");
    startService(register);

}

共 (1) 个答案

  1. # 1 楼答案

    您需要在intents中指定要注册/取消注册的类。尝试添加register.setClass(this, MyClassToUse.class);unregister.setClass(this, MyClassToUse.class);