Added option to support the development by donating.
This commit is contained in:
parent
5283a0ca7a
commit
d869a87d98
8 changed files with 104 additions and 7 deletions
|
|
@ -101,6 +101,8 @@ dependencies {
|
|||
|
||||
compile 'com.jakewharton:butterknife:7.0.1'
|
||||
|
||||
compile 'com.anjlab.android.iab.v3:library:1.0.26'
|
||||
|
||||
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
|
||||
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
|
||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||
<uses-permission android:name="com.android.vending.BILLING" />
|
||||
|
||||
<application
|
||||
android:name=".App"
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
<h3>Version 0.9.44 beta2</h3>
|
||||
|
||||
<ol>
|
||||
<li><b>NEW:</b> Added option to support the development by donating.</li>
|
||||
<li><b>FIX:</b> Fixed status bar coloring for Lollipop and Marshmallow.</li>
|
||||
</ol>
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ import io.fabric.sdk.android.Fabric;
|
|||
public class App extends Application {
|
||||
public static final String TAG = App.class.getSimpleName();
|
||||
|
||||
public static final String GOOGLE_PLAY_LICENSE_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjMeADN5Ffnt/ml5SYxNPCn8kGcOYGpHEfNSCts99vVxqmCn6C01E94c17j7rUK2aeHur5uxphZylzopPlQ8P8l1fqty0GPUNRSo18FCJzfGH8HZAwZYOcnRFPaXdaq3InyFJhBiODh2oeAcVK/idH6QraQ4r9HIlzigAg6lgwzxl2wJKDh7X/GMdDntCyzDh8xDQ0wIawFgvgojHwqh2Ci8Gnq6EYRwPA9yHiIIksT8Q30QyM5ewl5QcnWepsls7enNqeHarhpmSibRUDgCsxHoOpny7SyuvZvUI3wuLckDR0ds9hrt614scHHqDOBp/qWCZiAgOPVAEQcURbV09qQIDAQAB";
|
||||
|
||||
private RefWatcher refWatcher;
|
||||
|
||||
public static RefWatcher getRefWatcher(Context context) {
|
||||
|
|
|
|||
|
|
@ -33,9 +33,15 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.afollestad.materialcab.MaterialCab;
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.afollestad.materialdialogs.ThemeSingleton;
|
||||
import com.anjlab.android.iab.v3.BillingProcessor;
|
||||
import com.anjlab.android.iab.v3.BillingProcessor.IBillingHandler;
|
||||
import com.anjlab.android.iab.v3.TransactionDetails;
|
||||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.adapter.PagerAdapter;
|
||||
import com.kabouzeid.gramophone.dialogs.AboutDialog;
|
||||
|
|
@ -72,7 +78,7 @@ import butterknife.Bind;
|
|||
import butterknife.ButterKnife;
|
||||
|
||||
public class MainActivity extends AbsSlidingMusicPanelActivity
|
||||
implements KabViewsDisableAble, CabHolder {
|
||||
implements KabViewsDisableAble, CabHolder, IBillingHandler {
|
||||
|
||||
public static final String TAG = MainActivity.class.getSimpleName();
|
||||
|
||||
|
|
@ -89,10 +95,12 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
|||
@Bind(R.id.drawer_layout)
|
||||
DrawerLayout drawerLayout;
|
||||
|
||||
private PagerAdapter pagerAdapter;
|
||||
private MaterialCab cab;
|
||||
@Nullable
|
||||
private View navigationDrawerHeader;
|
||||
private PagerAdapter pagerAdapter;
|
||||
private MaterialCab cab;
|
||||
|
||||
private BillingProcessor billingProcessor;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
|
@ -114,6 +122,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
|||
setNavigationBarThemeColor();
|
||||
setStatusBarThemeColor();
|
||||
|
||||
billingProcessor = new BillingProcessor(this, App.GOOGLE_PLAY_LICENSE_KEY, this);
|
||||
|
||||
checkChangelog();
|
||||
}
|
||||
|
||||
|
|
@ -232,6 +242,14 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
|||
menuItem.setChecked(true);
|
||||
pager.setCurrentItem(PagerAdapter.MusicFragments.PLAYLIST.ordinal(), true);
|
||||
break;
|
||||
case R.id.support_development:
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
showDonationDialog();
|
||||
}
|
||||
}, 200);
|
||||
break;
|
||||
case R.id.nav_settings:
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
|
|
@ -588,4 +606,54 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
|||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void showDonationDialog() {
|
||||
new MaterialDialog.Builder(this)
|
||||
.title(R.string.support_development)
|
||||
.items(R.array.donation_names)
|
||||
.itemsCallback(new MaterialDialog.ListCallback() {
|
||||
@Override
|
||||
public void onSelection(MaterialDialog materialDialog, View view, int i, CharSequence charSequence) {
|
||||
final String[] ids = getResources().getStringArray(R.array.donation_ids);
|
||||
billingProcessor.purchase(MainActivity.this, ids[i]);
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProductPurchased(String productId, TransactionDetails details) {
|
||||
billingProcessor.consumePurchase(productId);
|
||||
Toast.makeText(this, R.string.thank_you, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPurchaseHistoryRestored() {
|
||||
// ignore
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBillingError(int errorCode, Throwable error) {
|
||||
Toast.makeText(this, "Billing error: code = " + errorCode + ", error: " +
|
||||
(error != null ? error.getMessage() : "?"), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBillingInitialized() {
|
||||
// ignore
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (!billingProcessor.handleActivityResult(requestCode, resultCode, data)) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
if (billingProcessor != null) {
|
||||
billingProcessor.release();
|
||||
}
|
||||
super.onDestroy();
|
||||
}
|
||||
}
|
||||
|
|
@ -25,6 +25,10 @@
|
|||
<group
|
||||
android:id="@+id/navigation_drawer_menu_category_other"
|
||||
android:checkableBehavior="none">
|
||||
<item
|
||||
android:id="@+id/support_development"
|
||||
android:icon="@drawable/ic_favorite_white_24dp"
|
||||
android:title="@string/support_development" />
|
||||
<item
|
||||
android:id="@+id/nav_settings"
|
||||
android:icon="@drawable/ic_settings_white_24dp"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,24 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Phonograph</string>
|
||||
<string name="credits_4">\u0020<a href="http://cookicons.co/">Cookicons</a></string>
|
||||
<string name="credits_2">\u0020<b>Karim Abou Zeid</b>.\n<a href="https://plus.google.com/+KarimAbouZeid23697">Google+</a>   <a href="https://twitter.com/karim23697">Twitter</a>\n\n</string>
|
||||
<string name="special_thanks_names">\u0020<a href="https://google.com/+AidanFollestad">Aidan Follestad</a>\n\n</string>
|
||||
<string name="app_name" translatable="false">Phonograph</string>
|
||||
<string name="credits_4" translatable="false">\u0020<a href="http://cookicons.co/">Cookicons</a></string>
|
||||
<string name="credits_2" translatable="false">\u0020<b>Karim Abou Zeid</b>.\n<a href="https://plus.google.com/+KarimAbouZeid23697">Google+</a>   <a href="https://twitter.com/karim23697">Twitter</a>\n\n</string>
|
||||
<string name="special_thanks_names" translatable="false">\u0020<a href="https://google.com/+AidanFollestad">Aidan Follestad</a>\n\n</string>
|
||||
|
||||
<string-array name="donation_names" translatable="false">
|
||||
<item>$1.00</item>
|
||||
<item>$3.00</item>
|
||||
<item>$5.00</item>
|
||||
<item>$10.00</item>
|
||||
<item>$15.00</item>
|
||||
<item>$20.00</item>
|
||||
</string-array>
|
||||
<string-array name="donation_ids" translatable="false">
|
||||
<item>donation_1</item>
|
||||
<item>donation_3</item>
|
||||
<item>donation_5</item>
|
||||
<item>donation_10</item>
|
||||
<item>donation_15</item>
|
||||
<item>donation_20</item>
|
||||
</string-array>
|
||||
</resources>
|
||||
|
|
@ -175,4 +175,6 @@
|
|||
<string name="changelog">Changelog</string>
|
||||
<string name="permission_to_access_external_storage_denied">Permission to access external storage denied.</string>
|
||||
<string name="back">back</string>
|
||||
<string name="support_development">Support development</string>
|
||||
<string name="thank_you">Thank you!</string>
|
||||
</resources>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue