- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 gcm 为我的 android 应用程序创建推送通知服务。我在我的项目中遇到以下错误:
// Make sure the manifest permissions was properly set
GCMRegistrar.checkManifest(this);
应用程序在此行强制关闭。我将在 logcat 中显示日志:
07-23 12:53:47.619: D/AndroidRuntime(15575): Shutting down VM
07-23 12:53:47.619: W/dalvikvm(15575): threadid=1: thread exiting with uncaught exception (group=0x4163fc20)
07-23 12:53:47.679: E/AndroidRuntime(15575): FATAL EXCEPTION: main
07-23 12:53:47.679: E/AndroidRuntime(15575): Process: com.tonyjoseph.kra, PID: 15575
07-23 12:53:47.679: E/AndroidRuntime(15575): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tonyjoseph.kra/com.tonyjoseph.kra.MainActivity}: java.lang.IllegalStateException: No receiver for package com.tonyjoseph.kra
07-23 12:53:47.679: E/AndroidRuntime(15575): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215)
07-23 12:53:47.679: E/AndroidRuntime(15575): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2265)
07-23 12:53:47.679: E/AndroidRuntime(15575): at android.app.ActivityThread.access$800(ActivityThread.java:145)
07-23 12:53:47.679: E/AndroidRuntime(15575): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206)
07-23 12:53:47.679: E/AndroidRuntime(15575): at android.os.Handler.dispatchMessage(Handler.java:102)
07-23 12:53:47.679: E/AndroidRuntime(15575): at android.os.Looper.loop(Looper.java:136)
07-23 12:53:47.679: E/AndroidRuntime(15575): at android.app.ActivityThread.main(ActivityThread.java:5177)
07-23 12:53:47.679: E/AndroidRuntime(15575): at java.lang.reflect.Method.invokeNative(Native Method)
07-23 12:53:47.679: E/AndroidRuntime(15575): at java.lang.reflect.Method.invoke(Method.java:515)
07-23 12:53:47.679: E/AndroidRuntime(15575): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
07-23 12:53:47.679: E/AndroidRuntime(15575): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611)
07-23 12:53:47.679: E/AndroidRuntime(15575): at dalvik.system.NativeStart.main(Native Method)
07-23 12:53:47.679: E/AndroidRuntime(15575): Caused by: java.lang.IllegalStateException: No receiver for package com.tonyjoseph.kra
07-23 12:53:47.679: E/AndroidRuntime(15575): at com.google.android.gcm.GCMRegistrar.checkManifest(GCMRegistrar.java:151)
07-23 12:53:47.679: E/AndroidRuntime(15575): at com.tonyjoseph.kra.MainActivity.onCreate(MainActivity.java:54)
07-23 12:53:47.679: E/AndroidRuntime(15575): at android.app.Activity.performCreate(Activity.java:5231)
07-23 12:53:47.679: E/AndroidRuntime(15575): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-23 12:53:47.679: E/AndroidRuntime(15575): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
07-23 12:53:47.679: E/AndroidRuntime(15575): ... 11 more
07-23 12:53:49.379: I/Process(15575): Sending signal. PID: 15575 SIG: 9
上面的日志是我的app在logcat中的 Activity 日志。发生在我身上的一件奇怪的事情是,当我运行我的应用程序时,另一条消息也开始在 logcat 中显示为另一个保存的过滤器。它在 logcat 中的名称是这样的:com.google.android.gms (Session Filter)。我不知道它是否与我的应用程序有关。但我正在展示这个,因为它可能有助于清除错误。我还将显示该日志:
07-23 11:12:42.999: W/ContextImpl(13335): Implicit intents with startService are not safe: Intent { act=com.google.android.gms.analytics.service.START } android.content.ContextWrapper.startService:494 com.google.android.gms.analytics.service.AnalyticsService.onCreate:165 android.app.ActivityThread.handleCreateService:2592
07-23 11:13:05.509: W/GA-SERVICE(13335): Thread[Thread-237,5,main]: Using destination https://ssl.google-analytics.com/collect
07-23 11:15:05.809: W/ActivityThread(13335): ClassLoader.loadClass: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a context class loader. For example: Thread.setContextClassLoader(getClass().getClassLoader());
07-23 11:41:39.409: W/ContextImpl(13335): Implicit intents with startService are not safe: Intent { act=com.google.android.gms.analytics.service.START } android.content.ContextWrapper.startService:494 com.google.android.gms.analytics.service.AnalyticsService.onCreate:165 android.app.ActivityThread.handleCreateService:2592
07-23 11:41:39.469: W/GA-SERVICE(13335): Thread[Thread-238,5,main]: Using destination https://ssl.google-analytics.com/collect
07-23 12:50:09.119: D/SystemBroadcastService(13335): Received broadcast action=android.intent.action.PACKAGE_REMOVED and uri=
07-23 12:50:09.709: W/ContextImpl(13335): Implicit intents with startService are not safe: Intent { act=com.google.android.gms.games.service.INTENT } android.content.ContextWrapper.startService:494 com.google.android.gms.games.service.GamesIntentService.a:101 com.google.android.gms.games.service.GamesIntentService.c:373
07-23 12:50:09.759: W/ContextImpl(13335): Implicit intents with startService are not safe: Intent { act=com.google.android.gms.appstate.service.INTENT } android.content.ContextWrapper.startService:494 com.google.android.gms.appstate.service.AppStateIntentService.a:58 com.google.android.gms.appstate.service.AppStateIntentService.a:104
07-23 12:50:11.339: W/dalvikvm(13335): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lcom/google/android/gms/icing/impl/NativeIndex;
07-23 12:50:11.489: E/Icing(13335): Error linking native code, bailing from initialization
07-23 12:50:11.489: E/Icing(13335): java.lang.UnsatisfiedLinkError: Couldn't load AppDataSearch from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/com.android.location.provider.jar", zip file "/system/priv-app/PrebuiltGmsCore.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]]: findLibrary returned null
07-23 12:50:11.489: E/Icing(13335): at java.lang.Runtime.loadLibrary(Runtime.java:358)
07-23 12:50:11.489: E/Icing(13335): at java.lang.System.loadLibrary(System.java:526)
07-23 12:50:11.489: E/Icing(13335): at com.google.android.gms.icing.impl.NativeIndex.<clinit>(SourceFile:497)
07-23 12:50:11.489: E/Icing(13335): at cgf.a(SourceFile:158)
07-23 12:50:11.489: E/Icing(13335): at cgv.a(SourceFile:524)
07-23 12:50:11.489: E/Icing(13335): at chg.run(SourceFile:287)
07-23 12:50:11.489: E/Icing(13335): at android.os.Handler.handleCallback(Handler.java:733)
07-23 12:50:11.489: E/Icing(13335): at android.os.Handler.dispatchMessage(Handler.java:95)
07-23 12:50:11.489: E/Icing(13335): at android.os.Looper.loop(Looper.java:136)
07-23 12:50:11.489: E/Icing(13335): at cft.run(SourceFile:38)
07-23 12:50:11.489: E/Icing(13335): Internal init failed
07-23 12:50:11.489: E/Icing(13335): Couldn't handle android.intent.action.PACKAGE_REMOVED intent due to initialization failure.
07-23 12:50:12.099: I/PeopleDatabaseHelper(13335): cleanUpNonGplusAccounts done.
07-23 12:51:52.229: W/ContextImpl(13335): Implicit intents with startService are not safe: Intent { act=com.google.android.gms.analytics.service.START } android.content.ContextWrapper.startService:494 com.google.android.gms.analytics.service.AnalyticsService.onCreate:165 android.app.ActivityThread.handleCreateService:2592
07-23 12:51:53.089: W/GA-SERVICE(13335): Thread[Thread-315,5,main]: Using destination https://ssl.google-analytics.com/collect
07-23 12:51:56.749: W/GA-SERVICE(13335): Thread[Thread-315,5,main]: Using destination https://ssl.google-analytics.com/collect
07-23 12:52:50.539: D/SystemBroadcastService(13335): Received broadcast action=android.intent.action.PACKAGE_ADDED and uri=
07-23 12:52:50.719: W/ContextImpl(13335): Implicit intents with startService are not safe: Intent { act=com.google.android.gms.games.service.INTENT } android.content.ContextWrapper.startService:494 com.google.android.gms.games.service.GamesIntentService.a:101 com.google.android.gms.games.service.GamesIntentService.b:368
07-23 12:52:51.069: E/Icing(13335): Couldn't handle android.intent.action.PACKAGE_ADDED intent due to initialization failure.
07-23 12:53:48.669: W/GA-SERVICE(13335): Thread[Thread-315,5,main]: Using destination https://ssl.google-analytics.com/collect
我不知道上面的日志是不是因为我的应用程序出错了。这就是为什么我在这里发布这个。如果与主题不相关,您可以删除它或忽略它。我在谷歌或其他任何地方都没有找到任何解决我的错误的方法。这就是为什么我在这里寻求一点帮助。
这是我的 MainActivity:
MainActivity.java
package com.tonyjoseph.kra;
import com.google.android.gcm.GCMRegistrar;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends Activity {
Controller aController;
// Asyntask
AsyncTask<Void, Void, Void> mRegisterTask;
public static String name;
public static String email,mobile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
aController = (Controller) getApplicationContext();
// Check if Internet present
if (!aController.isConnectingToInternet()) {
// Internet Connection is not present
aController.showAlertDialog(MainActivity.this,
"Internet Connection Error",
"Please connect to Internet connection", false);
// stop executing code by return
return;
}
// Getting name, email from intent
Intent i = getIntent();
name = i.getStringExtra("name");
email = i.getStringExtra("email");
mobile=i.getStringExtra("mobile");
// Make sure the device has the proper dependencies.
GCMRegistrar.checkDevice(this);
// Make sure the manifest permissions was properly set
//The error is in this line as mentioned by the logcat.
GCMRegistrar.checkManifest(this);
// Register custom Broadcast receiver to show messages on activity
registerReceiver(mHandleMessageReceiver, new IntentFilter(
Config.DISPLAY_MESSAGE_ACTION));
// Get GCM registration id
final String regId = GCMRegistrar.getRegistrationId(this);
// Check if regid already presents
if (regId.equals("")) {
// Register with GCM
GCMRegistrar.register(this, Config.GOOGLE_SENDER_ID);
} else {
// Device is already registered on GCM Server
if (GCMRegistrar.isRegisteredOnServer(this)) {
// Skips registration.
Toast.makeText(getApplicationContext(), "Already registered with GCM Server", Toast.LENGTH_LONG).show();
} else {
// Try to register again, but not in the UI thread.
// It's also necessary to cancel the thread onDestroy(),
// hence the use of AsyncTask instead of a raw thread.
final Context context = this;
mRegisterTask = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
// Register on our server
// On server creates a new user
aController.register(context, name, email, regId,mobile);
return null;
}
@Override
protected void onPostExecute(Void result) {
mRegisterTask = null;
}
};
// execute AsyncTask
mRegisterTask.execute(null, null, null);
}
}
}
// Create a broadcast receiver to get message and show on screen
private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String newMessage = intent.getExtras().getString(Config.EXTRA_MESSAGE);
// Waking up mobile if it is sleeping
aController.acquireWakeLock(getApplicationContext());
// Display message on the screen
//lblMessage.append(newMessage + "\n");
Toast.makeText(getApplicationContext(), "Got Message: " + newMessage, Toast.LENGTH_LONG).show();
// Releasing wake lock
aController.releaseWakeLock();
}
};
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
// Cancel AsyncTask
if (mRegisterTask != null) {
mRegisterTask.cancel(true);
}
try {
// Unregister Broadcast Receiver
unregisterReceiver(mHandleMessageReceiver);
//Clear internal resources.
GCMRegistrar.onDestroy(this);
} catch (Exception e) {
Log.e("UnRegister Receiver Error", "> " + e.getMessage());
}
super.onDestroy();
}
@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;
}
我还在我的 AndroidManifest xml 文件中授予了以下权限。如下所示:
<!-- Creates a custom permission so only this app can receive its messages. -->
<permission
android:name="com.tonyjoseph.kra.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.tonyjoseph.kra.permission.C2D_MESSAGE" />
<!-- This app has permission to register and receive data message. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
为了完整说明,我将展示 AndroidManifest.xml 文件:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tonyjoseph.kra"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="18" />
<application
android:name="com.tonyjoseph.kra.Controller"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppBaseTheme" >
<activity
android:name="com.tonyjoseph.kra.MainActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name="com.tonyjoseph.kra.SplashScreen"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.tonyjoseph.kra.FirstUse"
android:label="@string/title_activity_first_use"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen">
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Creates a custom permission so only this app can receive its messages. -->
<permission
android:name="com.tonyjoseph.kra.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.tonyjoseph.kra.permission.C2D_MESSAGE" />
<!-- This app has permission to register and receive data message. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!-- Network State Permissions to detect Internet status -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Permission to vibrate -->
<uses-permission android:name="android.permission.VIBRATE" />
最佳答案
终于,我找到了问题的答案。实际上我忘了在 androidmanifest 中包含接收器(广播接收器)。我添加到我的 AndroidManifest 中的代码是这样的:
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.tonyjoseph.kra" />
</intent-filter>
</receiver>
添加此代码解决了我的问题,我能够将我的设备注册到服务器...
关于Android GCM 应用程序在我的 Android 应用程序中的 GCMRegistrar.checkManifest(this) 行强制关闭,出现未知错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24905039/
无法使用我已添加到构建路径的 gcm.jar 中的 GCMRegisterar,但我仍然在 logcat 中收到此消息。 07-12 14:29:08.825: I/dalvikvm(23536):
我正在尝试实现推送通知。我在 import com.google.android.gcm.GCMRegistrar 方面遇到问题,无法解决。 我确实安装了 Google Play Services 并
我在使用 GCMRegistrar 时遇到问题,这是代码: // Make sure the device has the proper dependencies. GCMRegistrar.chec
我正在尝试在我的应用程序上使用 GCM,但 GCMRegistrar.register 总是返回空字符串。这是我的 list :
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Android GCM : GCMRegistrar gives empty registration ID
我正在实现 GCM - 我做的第一件事是调用 GCMRegistrar.getRegistrationId 以查看设备是否已注册。它不是(返回空字符串),所以我对 GCMRegistrar.regis
我尝试实现 GCM,但出现错误,我尝试在互联网上查找日志,但找不到。当代码出现在这些行时,我在 logcat 中收到错误 GCMRegistrar.checkDevice(this); GCMRegi
我正在开发一个 android 应用程序,我想在其中实现 GCM 功能。我能够实现并且它在 Android Kitkat 4.4 版本(在 Micromax 089 上测试)中运行良好。但不适用于An
我一直在努力为我的应用程序获取设备 ID。这是我的代码 这段代码来 self 的类(class) GCMRegistrar.checkDevice(this); GCMRegistrar.checkM
我应该如何调用 GCMRegistrar.onDestroy?目前我的主要 Activity 包括: protected void onDestroy() { GCMRegistrar.onD
我的另一个愚蠢问题可能是。 我对使用 GCMRegistrar 或 GoogleCloudMessaging 感到困惑,我知道 GCMRegistrar 已被弃用,我想使用 GoogleCloudMe
这个问题在这里已经有了答案: The import com.google cannot be resolved? (1 个回答) 关闭 10 年前。 我正在尝试创建基于 GCM 的应用程序。我按照
我关注了http://developer.android.com/guide/google/gcm/gs.html#server-app在我的应用程序中实现 GCM
我正在努力完成 Google's GCM 上的入门步骤来自 Google 的 Android 开发者网站。 当我的设备尝试注册时失败,原因如下: Activity has leaked IntentR
我有一个只有几行的简单应用程序,因为我试图找出为什么我的真实应用程序在 GCMRegistrar.checkDevice(this) 中崩溃(如果我删除它,我的应用程序不会崩溃)。谁能帮忙? :(:
我正在尝试使用 google GCM 注册 Android 应用程序,但它似乎在 eclipse 中导致错误。有什么帮助吗? 当我尝试检查它是否已注册时,它就爆炸了。它编译得很好,我添加了 impor
我之前看过有关此问题的帖子,但似乎没有一个解决方案对我有用。 我下载/安装了 Eclipse for Mobile( http://www.eclipse.org/downloads/packages
我正在尝试注册 GCM。 我首先检查我的 getRegistrationID 是否返回 null,当返回 null 时,我调用 GCMRegistrar.register(context, sende
public void registerClient() { try { // Check that the device supports GCM (should be in a t
我正在尝试使用 gcm 为我的 android 应用程序创建推送通知服务。我在我的项目中遇到以下错误: // Make sure the manifest permissions was proper
我是一名优秀的程序员,十分优秀!