Android 应用程序拒绝连接到后端

Android 应用程序拒绝连接到后端,android,parse-platform,Android,Parse Platform,我正在开发一个名为TobaccoRoad的应用程序,它使用了一个名为BestApproach的图书馆项目。它使用解析后端来显示自定义生成的内容并处理推送通知。直到几天前,一切都很正常,当时我肯定把一些设置搞砸了,它似乎不再连接到解析系统。我很确定这是一个本地问题,因为我的第二部测试手机在几天内还没有更新代码,它仍然收到通知,可以查看自定义内容 奇怪的是,即使在清理了我的工作区,重新开始使用我的雇主给我的(绝对不错的)代码,并且遵循Parse.com上的所有教程和故障排除指南(参见;)之后,我仍然

我正在开发一个名为TobaccoRoad的应用程序,它使用了一个名为BestApproach的图书馆项目。它使用解析后端来显示自定义生成的内容并处理推送通知。直到几天前,一切都很正常,当时我肯定把一些设置搞砸了,它似乎不再连接到解析系统。我很确定这是一个本地问题,因为我的第二部测试手机在几天内还没有更新代码,它仍然收到通知,可以查看自定义内容

奇怪的是,即使在清理了我的工作区,重新开始使用我的雇主给我的(绝对不错的)代码,并且遵循Parse.com上的所有教程和故障排除指南(参见;)之后,我仍然没有连接到Parse。我还没有做出任何我能回忆起的重大改变,所以我不知道是什么导致了这一点

我知道这不是一个错误的applicationID或clientKey的问题,因为即使将随机字符串替换到Parse.initialize调用中,也会得到相同的结果,并且会出现无法进行身份验证的logcat错误

以下是我清单文件中的相关部分,首先是库项目

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.bestapproach.lib"
      android:versionCode="8"
      android:versionName="1.6.1">
    <uses-sdk android:minSdkVersion="7" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <application android:icon="@drawable/app_icon" android:label="@string/app_name"
        android:theme="@style/Theme.BA" >
        <activity android:name="com.bestapproach.lib.SplashActivity"
                  android:label="@string/app_name"
                  android:screenOrientation="portrait"
                  android:configChanges="orientation"
                  android:theme="@style/Theme.BA.Splash">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    <!--Declarations for all of my Activities...-->
        <service android:name="com.parse.PushService" />
        <receiver android:name="com.parse.ParseBroadcastReceiver">
          <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.USER_PRESENT" />
          </intent-filter>
        </receiver>
    </application>        
    </manifest>
我发现的建议似乎与我所需要的内容相符,包括在每个活动的
onCreate()
中运行
Parse.initialize()
,这是我不想做的,因为它们太多了,可能会有很多重复的代码,或者生成一个应用程序对象并从那里运行它。由于TobaccoRoad对library项目的依赖性,一旦我将它添加到清单文件中,我尝试过的与之相关的一切都以失败告终

我知道,这是一个很大的挖掘,但任何建议将不胜感激。谢谢大家。

可能的解决方案:

换行

 if (!("".equals(parseClientId) || "".equals(parseAppId))) {
    Parse.initialize(this, parseAppId, parseClientId);
为此:

if (!("".equals(parseClientId) || "".equals(parseAppId))) {
    Parse.initialize(SplashActivity.this, parseAppId, parseClientId);
问题是

ParseAnalytics.trackAppOpened(getIntent());

从您的SplashActivity和应用程序范围接受该活动的意图 此外,您还可以从活动中初始化解析,而我们通常不会这样做。 我们尝试从应用程序类初始化解析,以便它具有应用程序范围的上下文,而不是活动范围的上下文。 我建议您创建一个应用程序类,并在应用程序的onCreate中包含解析代码……您只需要执行一次

或者,您可以创建一些基本活动,并使应用程序中的所有活动都扩展到该活动。这将避免您编写重复的代码…这只是为了防止您必须不创建应用程序类


请原谅我有任何错误…我是新来回答的。

您已经将您的
AppId
ClientId
与解析云中的实际值进行了比较?这不起作用…因为这只是发生在我的手机上,我只是手动将值输入到我正在运行的版本中。现在还可以。谢谢你。如果我发现了其他问题,我将进行更新。从您的SplashActivity而不是从应用程序范围接受该活动的意图
if (!("".equals(parseClientId) || "".equals(parseAppId))) {
    Parse.initialize(SplashActivity.this, parseAppId, parseClientId);
ParseAnalytics.trackAppOpened(getIntent());