- 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/
猫f1.txt阿曼维沙尔阿杰贾伊维杰拉胡尔曼尼什肖比特批评塔夫林现在输出应该符合上面给定的条件 最佳答案 您可以在文件读取循环中设置一个计数器并打印它, 计数=0 读取行时做 让我们数一数++ if
我正在尝试查找文件 1 和文件 2 中的共同行。如果公共(public)行存在,我想写入文件 2 中的行,否则打印文件 1 中的非公共(public)行。fin1 和 fin2 是这里的文件句柄。它读
我有这个 SQL 脚本: CREATE TABLE `table_1` ( `IDTable_1` int(11) NOT NULL, PRIMARY KEY (`IDTable_1`) );
我有 512 行要插入到数据库中。我想知道提交多个插入内容是否比提交一个大插入内容有任何优势。例如 1x 512 行插入 -- INSERT INTO mydb.mytable (id, phonen
如何从用户中选择user_id,SUB(row, row - 1),其中user_id=@userid我的表用户,id 为 1、3、4、10、11、23...(不是++) --id---------u
我曾尝试四处寻找解决此问题的最佳方法,但我找不到此类问题的任何先前示例。 我正在构建一个基于超本地化的互联网购物中心,该区域分为大约 3000 个区域。每个区域包含大约 300 个项目。它们是相似的项
preg_match('|phpVersion = (.*)\n|',$wampConfFileContents,$result); $phpVersion = str_replace('"','',
我正在尝试创建一个正则表达式,使用“搜索并替换全部”删除 200 个 txt 文件的第一行和最后 10 行 我尝试 (\s*^(\h*\S.*)){10} 删除包含的前 10 行空白,但效果不佳。 最
下面的代码从数据库中获取我需要的信息,但没有打印出所有信息。首先,我知道它从表中获取了所有正确的信息,因为我已经在 sql Developer 中尝试过查询。 public static void m
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我试图在两个表中插入记录,但出现异常。您能帮我解决这个问题吗? 首先我尝试了下面的代码。 await _testRepository.InsertAsync(test); await _xyzRepo
这个基本的 bootstrap CSS 显示 1 行 4 列: Text Text Text
如果我想从表中检索前 10 行,我将使用以下代码: SELECT * FROM Persons LIMIT 10 我想知道的是如何检索前 10 个结果之后的 10 个结果。 如果我在下面执行这段代码,
今天我开始使用 JexcelApi 并遇到了这个:当您尝试从特定位置获取元素时,不是像您通常期望的那样使用sheet.getCell(row,col),而是使用sheet.getCell(col,ro
我正在尝试在我的网站上开发一个用户个人资料系统,其中包含用户之前发布的 3 个帖子。我可以让它选择前 3 条记录,但它只会显示其中一条。我是不是因为凌晨 2 点就想编码而变得愚蠢? query($q)
我在互联网上寻找答案,但找不到任何答案。 (我可能问错了?)我有一个看起来像这样的表: 我一直在使用查询: SELECT title, date, SUM(money) FROM payments W
我有以下查询,我想从数据库中获取 100 个项目,但 host_id 多次出现在 urls 表中,我想每个 host_id 从该表中最多获取 10 个唯一行。 select * from urls j
我的数据库表中有超过 500 行具有特定日期。 查询特定日期的行。 select * from msgtable where cdate='18/07/2012' 这将返回 500 行。 如何逐行查询
我想使用 sed 从某一行开始打印 n 行、跳过 n 行、打印 n 行等,直到文本文件结束。例如在第 4 行声明,打印 5-9,跳过 10-14,打印 15-19 等 来自文件 1 2 3 4 5 6
我目前正在执行验证过程来检查用户的旧密码,但问题是我无法理解为什么我的查询返回零行,而预期它有 1 行。另一件事是,即使我不将密码文本转换为 md5,哈希密码仍然得到正确的答案,但我不知道为什么会发生
我是一名优秀的程序员,十分优秀!