Non-free app download attempt disabled

This commit is contained in:
Sergey Eremin
2016-12-29 12:54:48 +03:00
parent f72756d419
commit 89e2ab5cb8
5 changed files with 41 additions and 24 deletions

View File

@@ -180,33 +180,38 @@ public class DetailsActivity extends Activity {
setText(R.id.permissions, TextUtils.join("\n", localizedPermissions));
Button downloadButton = (Button) findViewById(R.id.download);
downloadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
task = new GoogleApiAsyncTask() {
@Override
protected Throwable doInBackground(Void... params) {
PlayStoreApiWrapper wrapper = new PlayStoreApiWrapper(DetailsActivity.this);
try {
wrapper.download(app);
} catch (Throwable e) {
return e;
if (app.isFree()) {
downloadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
task = new GoogleApiAsyncTask() {
@Override
protected Throwable doInBackground(Void... params) {
PlayStoreApiWrapper wrapper = new PlayStoreApiWrapper(DetailsActivity.this);
try {
wrapper.download(app);
} catch (Throwable e) {
return e;
}
return null;
}
return null;
};
task.setContext(v.getContext());
task.prepareDialog(
getString(R.string.dialog_message_purchasing_app),
getString(R.string.dialog_title_purchasing_app)
);
if (checkPermission()) {
task.execute();
} else {
requestPermission();
}
};
task.setContext(v.getContext());
task.prepareDialog(
getString(R.string.dialog_message_purchasing_app),
getString(R.string.dialog_title_purchasing_app)
);
if (checkPermission()) {
task.execute();
} else {
requestPermission();
}
}
});
});
} else {
downloadButton.setText(getString(R.string.details_download_nonfree));
downloadButton.setEnabled(false);
}
}
private void setText(int viewId, String text) {

View File

@@ -52,6 +52,7 @@ public class PlayStoreApiWrapper {
app.setRating(details.getAggregateRating().getStarRating());
if (details.getOfferCount() > 0) {
app.setOfferType(details.getOffer(0).getOfferType());
app.setFree(details.getOffer(0).getMicros() == 0);
}
AppDetails appDetails = details.getDetails().getAppDetails();
app.getPackageInfo().packageName = appDetails.getPackageName();

View File

@@ -25,6 +25,7 @@ public class App {
private String description;
private List<String> permissions;
private boolean isInstalled;
private boolean isFree;
public App() {
this.packageInfo = new PackageInfo();
@@ -175,4 +176,12 @@ public class App {
public void setInstalled(boolean installed) {
isInstalled = installed;
}
public boolean isFree() {
return isFree;
}
public void setFree(boolean free) {
isFree = free;
}
}

View File

@@ -32,6 +32,7 @@
<string name="details_versionName" formatted="false">Версия %s</string>
<string name="details_versionName_updatable" formatted="false">Версия %s → %s</string>
<string name="details_download">Скачать</string>
<string name="details_download_nonfree">Платное приложение - скачать не получится</string>
<string name="suffix_million">млн</string>
<string name="suffix_billion">млрд</string>
<string name="credentials_hint_email">e-mail</string>

View File

@@ -32,6 +32,7 @@
<string name="details_versionName" formatted="false">Version %s</string>
<string name="details_versionName_updatable" formatted="false">Version %s → %s</string>
<string name="details_download">Download</string>
<string name="details_download_nonfree">App is not free - download disabled</string>
<string name="suffix_million">mil</string>
<string name="suffix_billion">bil</string>
<string name="credentials_hint_email">e-mail here</string>