added possibility to share strings from javascript to iitc share activity (see #482)

This commit is contained in:
Philipp Schaefer 2013-08-13 17:03:30 +02:00
parent 0ee98355bd
commit d822d56377
3 changed files with 31 additions and 11 deletions

2
mobile/.idea/misc.xml generated
View File

@ -3,7 +3,7 @@
<component name="EntryPointsManager">
<entry_points version="2.0" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="Android 4.2.2" project-jdk-type="Android SDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="Android 4.3 Platform" project-jdk-type="Android SDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@ -51,6 +51,15 @@ public class IITC_JSInterface {
mContext.startActivity(intent);
}
// share a string to the IITC share activity. only uses the share tab.
@JavascriptInterface
public void shareString(String str) {
Intent intent = new Intent(mContext, ShareActivity.class);
intent.putExtra("shareString", str);
intent.putExtra("onlyShare", true);
mContext.startActivity(intent);
}
// disable javascript injection while spinner is enabled
// prevent the spinner from closing automatically
@JavascriptInterface

View File

@ -64,13 +64,17 @@ public class ShareActivity extends FragmentActivity implements ActionBar.TabList
.apply();
}
private void setupIntents() {
private void setupShareIntent(String str) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, getUrl());
intent.putExtra(Intent.EXTRA_TEXT, str);
intent.putExtra(Intent.EXTRA_SUBJECT, mTitle);
addTab(intent, R.string.tab_share, R.drawable.share);
}
private void setupIntents() {
setupShareIntent(getUrl());
// we merge gmaps intents with geo intents since it is not possible
// anymore to set a labeled marker on geo intents
@ -95,7 +99,7 @@ public class ShareActivity extends FragmentActivity implements ActionBar.TabList
intents.add(geoIntent);
addTab(intents, R.string.tab_map, R.drawable.location_map);
intent = new Intent(Intent.ACTION_VIEW, Uri.parse(getUrl()));
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(getUrl()));
addTab(intent, R.string.tab_browser, R.drawable.browser);
}
@ -104,18 +108,25 @@ public class ShareActivity extends FragmentActivity implements ActionBar.TabList
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_share);
Intent intent = getIntent();
mTitle = intent.getStringExtra("title");
mLl = intent.getDoubleExtra("lat", 0) + "," + intent.getDoubleExtra("lng", 0);
mZoom = intent.getIntExtra("zoom", 0);
mIsPortal = intent.getBooleanExtra("isPortal", false);
mFragmentAdapter = new IntentFragmentAdapter(getSupportFragmentManager());
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayHomeAsUpEnabled(true);
mFragmentAdapter = new IntentFragmentAdapter(getSupportFragmentManager());
setupIntents();
Intent intent = getIntent();
// from portallinks/permalinks we build 3 intents (share / geo / vanilla-intel-link)
if (intent.getBooleanExtra("onlyShare", false) == false) {
mTitle = intent.getStringExtra("title");
mLl = intent.getDoubleExtra("lat", 0) + "," + intent.getDoubleExtra("lng", 0);
mZoom = intent.getIntExtra("zoom", 0);
mIsPortal = intent.getBooleanExtra("isPortal", false);
setupIntents();
} else {
mTitle = getString(R.string.app_name);
setupShareIntent(intent.getStringExtra("shareString"));
}
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mFragmentAdapter);