2014-03-31 8 views
2

프로젝트를 만들 때 생성 된 cordova (아래 참조)에서 활동하고 있습니다. 하지만 이제 CordovaActivity가 아닌 응용 프로그램을 확장하는 Java 클래스를 만들어야합니다.Android에서 코드바로 기본 앱 클래스를 만드는 방법

package com.guessSound.guessSound; 

import android.os.Bundle; 
import org.apache.cordova.*; 
// import com.parse.*; 
// import com.parse.Parse; 
// import com.parse.ParseAnalytics; 
// import com.parse.ParseInstallation; 
// import com.parse.PushService; 

public class GuessThisSound extends CordovaActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     super.init(); 

     // // Set by <content src="index.html" /> in config.xml 
     super.setIntegerProperty("splashscreen", R.drawable.splash); 
     super.loadUrl(Config.getStartUrl(),3000); 

     //super.loadUrl("file:///android_asset/www/index.html") 
    } 
} 

그리고 임 응용 프로그램을 구축 할 때, 나는 "찾을 수없는 기호"에 대한받을

package com.guessSound.guessSound; 

import android.os.Bundle; 
import org.apache.cordova.*; 
// import com.parse.*; 
import com.parse.Parse; 
import com.parse.ParseAnalytics; 
import com.parse.ParseInstallation; 
import com.parse.PushService; 

public class MainApplication extends Application { 
    private static MainApplication instance = new MainApplication(); 

    public MainApplication() { 
     instance = this; 
    } 

    public static Context getContext() { 
     return instance; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Parse.initialize(this, "xx", "xx"); 
     PushService.setDefaultPushCallback(this, GuessThisSound.class); 
     PushService.subscribe(this, "Broadcast", GuessThisSound.class); 
     ParseInstallation.getCurrentInstallation().saveInBackground(); 
    } 
} 

이하 그러나 같은 응용 프로그램은 새로운 클래스를 만들려면 : 이것은 내가 가진 무엇 응용 프로그램 및 컨텍스트. import android.Context (응용 프로그램과 동일)를 작성하여 응용 프로그램과 컨텍스트를 모두 가져 오려고 했으므로 CordovaActivity와 Activity가 아닌 첫 번째 클래스를 확장하므로 CordovaApplication을 사용해야한다고 생각합니다. 내 AndroidManifest를은 다음과 같습니다

나는 유사한 문제에 직면했습니다
<?xml version='1.0' encoding='utf-8'?> 
<manifest android:hardwareAccelerated="true" android:versionCode="4" android:versionName="1.3.0" android:windowSoftInputMode="adjustPan" package="com.guessSound.guessSound" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" /> 
    <application android:debuggable="false" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:name="com.guessSound.guessSound.MainApplication"> 
     <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:name="com.guessSound.guessSound.GuessThisSound" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <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> 
    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.RECORD_VIDEO" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="com.android.vending.BILLING" /> 
</manifest> 
+0

명백한 답이없는 순간 Parse와 동일한 문제가 있습니다. – RyanP13

답변

0

이 - 또한 내 코르도바 프로젝트와 충돌하지 푸시 알림을 구문 분석 얻기 위해 응용 프로그램 클래스를 만들려고

. 짧은 답변 : 0 당신의 MainApplication 파일에서 , 당신은 가져 오기를
import android.app.Application;

import android.content.Context

넓은 질문을 추가하고 답변해야합니다
우리가 해결하기 위해 노력하고 더 큰 문제는 다음을 해결하는 것입니다 Android에서 Cordova와 구문 분석 푸시 알림을 사용하는 경우 오류 : java.lang.RuntimeException: applicationContext is null. You must call Parse.initialize(context, applicationId, clientKey) before using the Parse library. (https://parse.com/questions/android-push-notification-error-msg 제공)

다소 간결한 대답은 우리가 "응용 프로그램 클래스를 작성하고의 AndroidManifest.xml에 등록해야한다고 말한다. 당신은 그것에서 onCreate 방법으로 Parse.initialize를 이동하면, 프로그램은 항상 구문 분석을 호출합니다 . 서비스가 시작되기 전에 .initialize. "
내 안드로이드 개발 (예 : 나 같은)에 대한 노출이 제한되어있는 개발자가 그 의미를 궁금해하는 곳입니다.

귀하의 구현은 내가 본 것 중 가장 가깝습니다.
또 다른 유효 하나
https://groups.google.com/forum/#!searchin/parse-developers/You $ 20must $ 20call $ 20Parse.initialize (컨텍스트 $ 2C $ 20applicationId $ 2C $ 20clientKey) $ 20before $ 20using $ 20the $ 20Parse $ 20library/구문 분석 - 개발자/AU31WlFG5yw/887uFopyOZAJ
에서 찾을 수 있습니다
안드로이드 어플리케이션 클래스의 좋은 설명은 여기에서 찾을 수 있습니다 : 나는 당신이는 getContext 방법을 필요가 있다고 생각하지 않습니다
http://www.intertech.com/Blog/androids-application-class/

참고; 이 작업은의 AndroidManifest.xml 파일에서 응용 프로그램 태그에 android:name="com.guessSound.guessSound.MainApplication"을 추가하는 것입니다 얻기 위해 (당신이 한)

package com.guessSound.guessSound; 

import android.app.Application; 
import org.apache.cordova.*; 
import com.parse.Parse; 
import com.parse.ParseAnalytics; 
import com.parse.ParseInstallation; 
import com.parse.PushService; 

public class MainApplication extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Parse.initialize(this, "xx", "xx"); 
     PushService.setDefaultPushCallback(this, GuessThisSound.class); 
     PushService.subscribe(this, "Broadcast", GuessThisSound.class); 
     ParseInstallation.getCurrentInstallation().saveInBackground(); 
    } 
} 


다른 중요한 비트 : 그래서 응용 프로그램 클래스로 단순화 할 수있는 것 .

관련 문제