2016-07-28 31 views
1

Ich möchte In-App-Käufe über eine Android App mithilfe der Google Play In-App Billing-API aktivieren. 3. Die von Google veröffentlichte TrivialDrive-Beispielanwendung enthält den folgenden Abschnitt von Java-Code:So registrieren Sie einen BroadcastReceiver für In-App-Käufe in der Manifestdatei von Android Studio

// Important: Dynamically register for broadcast messages about updated purchases. 
// We register the receiver here instead of as a <receiver> in the Manifest 
// because we always call getPurchases() at startup, so therefore we can ignore 
// any broadcasts sent while the app isn't running. 
// Note: registering this listener in an Activity is a bad idea, but is done here 
// because this is a SAMPLE. Regardless, the receiver must be registered after 
// IabHelper is setup, but before first call to getPurchases(). 
mBroadcastReceiver = new IabBroadcastReceiver(UpgradeActivity.this); 
IntentFilter broadcastFilter = new IntentFilter(IabBroadcastReceiver.ACTION); 
registerReceiver(mBroadcastReceiver, broadcastFilter); 

Das ist alles gut und gut. Ich habe jedoch noch ein richtiges Beispiel dafür gesehen, wie man den Listener in der Datei AndroidManifest.xml registriert oder wie man den registrierten Listener in Java-Code referenziert. Ich habe andere Beispiele für registrierte Listener gesehen, die nicht für die in-ap-Abrechnung gelten, aber nicht für , insbesondere, die für die In-App-Abrechnung konzipiert sind. Wie würde ich das tun?

Ich gehe davon aus, vielleicht falsch, dass das Manifest Teil etwas würde wie folgt aussehen:

<!-- Include required permissions for Google Mobile Ads to run --> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<!-- VERY IMPORTANT! Don't forget this permission, or in-app billing won't work. --> 
<uses-permission android:name="com.android.vending.BILLING" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/logo" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/Platform.AppCompat"> 

    <!-- This meta-data tag is required to use Google Play Services. --> 
    <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 

    <!-- Here is the relevant part. --> 
    <receiver android:name="package.path.to.IabBroadcastReceiver" 
     android:permission="android.permission.SOME_UNKNOWN_PERMISSION"> 
     <intent-filter> 
      <action android:name="android.intent.action.SOME_UNKNOWN_ACTION"/> 
     </intent-filter> 
    </receiver> 

    <!-- Place activities here. --> 
</application> 

Ich weiß nicht, was der Java-Code für den Hörer, die im Manifest registriert aussehen würde.

Vielen Dank im Voraus für Ihre Hilfe.

Antwort

0

sollten Sie einen Empfänger schaffen

<receiver 
     android:name=".Util.mBroadcastReceiver" 
     android:exported="false"> 
     <intent-filter> 
      <action android:name="com.parse.push.intent.RECEIVE" /> 
      <action android:name="com.parse.push.intent.DELETE" /> 
      <action android:name="com.parse.push.intent.OPEN" /> 
     </intent-filter> 
    </receiver> 

und erstellen Sie die Klasse:

public class mBroadcastReceiver extends ParsePushBroadcastReceiver { 

@Override 
public void onPushOpen(Context context, Intent intent) { 
     Intent i = new Intent(context, MainActivity.class); 
     i.putExtras(intent.getExtras()); 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
} 

}

vergessen Sie nicht die Berechtigungen:

<permission 
    android:name="your_package.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 

<uses-permission android:name="your_package.permission.C2D_MESSAGE" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
+0

Vielen Dank für die schnelle Antwort. Ich probiere das jetzt aus. Ich musste den Quellcode für den ParsePushBroadcastReceiver ausfindig machen. In diesem Paket gibt es jedoch einen Verweis auf eine Klasse namens Task, die ich nicht finden kann, und sie wird nicht ohne sie kompiliert. Wo finde ich die Aufgabenklasse? Es wird in AbstractQueryController und CacheQueryController verwiesen. – user3188777

+0

Vergesst nicht. Ich habe es im Schraubenrahmen gefunden. – user3188777

+0

Bis jetzt habe ich parse, bolt, okhttp und okio frameworks importiert, um den obigen Code zu verwenden, aber es gibt immer noch gebrochene Abhängigkeiten, und es wird nicht kompiliert. Gibt es dafür keinen besseren Weg, der nicht unzählige Importe erfordert? – user3188777