Bonjour à tous,
J'ai intégré à mon application Android in-app billing dans le but de permettre à l'utilisateur de supprimer une bannière de publicité.
Voici mon MainActivity.java
La fonction achat fonctionne bien , en test. Toutefois, je n'arrive pas à l'appliquer sur ma publicité afin de désactiver celle ci lorsque l'achat est réalisé. Ma publicité se trouve dans un fragment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137 public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { private static final String TAG = "com.mypackage.inappbilling"; public static final String ITEM_SKU = "test2"; NavigationView navigationView = null; Toolbar toolbar = null; IabHelper mHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //InAppBilling String base64EncodedPublicKey = "@string/base64"; // compute your public key and store it in base64EncodedPublicKey mHelper = new IabHelper(this, base64EncodedPublicKey); mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { @SuppressLint("LongLogTag") public void onIabSetupFinished(IabResult result) { if (!result.isSuccess()) { // Oh no, there was a problem. Log.d(TAG, "Problem setting up In-app Billing: " + result); } // Hooray, IAB is fully set up! } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (!mHelper.handleActivityResult(requestCode, resultCode, data)) { super.onActivityResult(requestCode, resultCode, data); } } IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { public void onIabPurchaseFinished(IabResult result, Purchase purchase) { if (result.isFailure()) { // Handle error return; } else if (purchase.getSku().equals(ITEM_SKU)) { consumeItem(); } } }; public void consumeItem() { mHelper.queryInventoryAsync(mReceivedInventoryListener); } IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener = new IabHelper.QueryInventoryFinishedListener() { public void onQueryInventoryFinished(IabResult result, Inventory inventory) { if (result.isFailure()) { // Handle failure } else { mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU), mConsumeFinishedListener); } } }; IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() { public void onConsumeFinished(Purchase purchase, IabResult result) { } }; @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.nav_agenda) { //Set the fragment initially MainFragment fragment = new MainFragment(); android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.fragment_container, fragment); fragmentTransaction.commit(); // Handle the camera action } else if (id == R.id.nav_cadena) { mHelper.launchPurchaseFlow(this, ITEM_SKU, 10001, mPurchaseFinishedListener, "mypurchasetoken"); } else if (id == R.id.nav_apropos) { //Set the fragment initially AproposFragment fragment = new AproposFragment(); android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.fragment_container, fragment); fragmentTransaction.commit(); } @Override public void onDestroy() { super.onDestroy(); if (mHelper != null) mHelper.dispose(); mHelper = null; }
MainFragment.java
Je bloque sur cette partie de code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 public class MainFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener { SwipeRefreshLayout swipeLayout; public static AdView adView; private RecyclerView recyclerView; private View rootView; public MainFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = inflater.inflate(R.layout.fragment_main, container, false); StartProgress(); updateInterface(); if (Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } return rootView; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { swipeLayout = (SwipeRefreshLayout) rootView.findViewById(R.id.swipe_container); swipeLayout.setOnRefreshListener(this); swipeLayout.setColorSchemeColors(getResources().getColor(R.color.colorPrimary), getResources().getColor(R.color.colorPrimaryDark), getResources().getColor(R.color.colorAccent)); } private void updateInterface() { if (purchase.getSku().equals(MainActivity.ITEM_SKU)) { displayAd(false); } else { displayAd(true); } } public void displayAd(boolean state) { if (state) { if (adView == null) { // Google has dropped Google Play Services support for Froyo if (Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) { adView = (AdView) rootView.findViewById(R.id.adViewCardItem); AdRequest adRequest = new AdRequest.Builder().build(); adView.loadAd(adRequest); } } } else { if (adView != null) { adView.destroy(); adView = null; } } } @Override public void onRefresh() { new Handler().postDelayed(new Runnable() { @Override public void run() { swipeLayout.setRefreshing(false); } }, 2000); } public void StartProgress() { new AsyncProgressBar().execute(); } private class AsyncProgressBar extends AsyncTask<Void, Void, Void> { protected ProgressDialog dialog; @Override protected void onPreExecute() { dialog = new ProgressDialog(getActivity()); dialog.setMessage("..."); dialog.setCancelable(false); dialog.show(); } @Override protected Void doInBackground(Void... params) { //duration of progressbar SystemClock.sleep(1000); return null; } @Override protected void onPostExecute(Void useless) { ..... } }
Comment puis-je faire appel à la variable "purchase" de mon MainActivity.java ? Ou peut être n'est ce pas la bonne méthode ? Pouvez-vous s'il vous plaît m'éclairer sur ce point ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private void updateInterface() { if (purchase.getSku().equals(MainActivity.ITEM_SKU)) { displayAd(false); } else { displayAd(true); } }
En vous remerciant par avance pour vos réponses.
Partager