Skip to content

Commit a4ccdc5

Browse files
committedDec 24, 2019
Fix game sharing for Android 10
1 parent 59ac771 commit a4ccdc5

File tree

2 files changed

+6
-64
lines changed

2 files changed

+6
-64
lines changed
 

‎scidOnTheGo/src/main/java/org/scid/android/ScidAndroidActivity.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -2017,15 +2017,15 @@ private void copyGameToClipboard() {
20172017

20182018
private void shareGame() {
20192019
String data = ctrl.getPGN();
2020-
Sharer sharer = new Sharer(this, getComponentName());
2020+
Sharer sharer = new Sharer(this);
20212021
sharer.createShareIntent("application/x-chess-pgn", data);
20222022
if (sharer.getIntent() != null) {
20232023
startActivity(sharer.getIntent());
20242024
}
20252025
}
20262026

20272027
private void sharePosition() {
2028-
Sharer sharer = new Sharer(this, getComponentName());
2028+
Sharer sharer = new Sharer(this);
20292029
sharer.createShareIntent("application/x-chess-fen", ctrl.getFEN());
20302030
if (sharer.getIntent() != null) {
20312031
startActivity(sharer.getIntent());

‎scidOnTheGo/src/main/java/org/scid/android/Sharer.java

+4-62
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,23 @@
11
package org.scid.android;
22

3-
import java.util.ArrayList;
4-
import java.util.List;
5-
63
import android.app.Activity;
7-
import android.content.ComponentName;
84
import android.content.Intent;
9-
import android.content.pm.PackageManager;
10-
import android.content.pm.ResolveInfo;
11-
import android.os.Parcelable;
125

136
public class Sharer {
147

15-
private ComponentName caller;
168
private Activity context;
179
private Intent intent = null;
1810

19-
Sharer(Activity context, ComponentName caller) {
11+
Sharer(Activity context) {
2012
this.context = context;
21-
this.caller = caller;
2213
}
2314

2415
void createShareIntent(String type, String data) {
25-
// put all possible intents into one list
26-
List<Intent> targets = getTargetIntentsForType(type, data, caller);
27-
if (!targets.isEmpty()) {
28-
List<Intent> extraTargets = getTargetIntentsForType("text/plain",
29-
data, caller);
30-
Intent firstIntent = targets.get(targets.size() - 1);
31-
Intent chooser = Intent.createChooser(firstIntent, context
32-
.getResources().getText(R.string.menu_share_game));
33-
if (!extraTargets.isEmpty()) {
34-
// add all extra targets if they are not already in the list
35-
for (Intent extra : extraTargets) {
36-
boolean found = false;
37-
for (Intent target : targets) {
38-
if (target.getPackage().equals(extra.getPackage())) {
39-
found = true;
40-
break;
41-
}
42-
}
43-
if (!found) {
44-
targets.add(extra);
45-
}
46-
}
47-
targets.remove(firstIntent);
48-
chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS,
49-
targets.toArray(new Parcelable[] {}));
50-
}
51-
this.intent = chooser;
52-
} else {
53-
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
54-
shareIntent.setType("text/plain");
55-
shareIntent.putExtra(Intent.EXTRA_TEXT, data);
56-
this.intent = Intent.createChooser(shareIntent, context
57-
.getResources().getText(R.string.menu_share_game));
58-
}
59-
}
60-
61-
private List<Intent> getTargetIntentsForType(String type, String data,
62-
ComponentName caller) {
63-
PackageManager packageManager = this.context.getPackageManager();
6416
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
6517
shareIntent.setType(type);
66-
List<Intent> targetedShareIntents = new ArrayList<>();
67-
List<ResolveInfo> resInfo = packageManager.queryIntentActivityOptions(
68-
caller, null, shareIntent, PackageManager.MATCH_DEFAULT_ONLY);
69-
for (ResolveInfo resolveInfo : resInfo) {
70-
Intent targetedShareIntent = new Intent(Intent.ACTION_SEND);
71-
targetedShareIntent.setType(type);
72-
targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT,
73-
data);
74-
targetedShareIntent
75-
.setPackage(resolveInfo.activityInfo.packageName);
76-
targetedShareIntents.add(targetedShareIntent);
77-
}
78-
return targetedShareIntents;
18+
shareIntent.putExtra(Intent.EXTRA_TEXT, data);
19+
this.intent = Intent.createChooser(shareIntent, context
20+
.getResources().getText(R.string.menu_share_game));
7921
}
8022

8123
public Intent getIntent() {

0 commit comments

Comments
 (0)
Failed to load comments.