parent
aead26f02c
commit
efd577b36b
@ -6,7 +6,6 @@ import android.support.annotation.Nullable;
|
|||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
import org.fdroid.fdroid.R;
|
import org.fdroid.fdroid.R;
|
||||||
import org.fdroid.fdroid.data.App;
|
import org.fdroid.fdroid.data.App;
|
||||||
import org.fdroid.fdroid.data.Schema;
|
import org.fdroid.fdroid.data.Schema;
|
||||||
@ -58,4 +57,13 @@ class InstalledAppListAdapter extends RecyclerView.Adapter<InstalledAppListItemC
|
|||||||
this.cursor = cursor;
|
this.cursor = cursor;
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public App getItem(int position) {
|
||||||
|
if (cursor == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
cursor.moveToPosition(position);
|
||||||
|
return new App(cursor);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,17 +22,20 @@ package org.fdroid.fdroid.views.installed;
|
|||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.LoaderManager;
|
import android.support.v4.app.LoaderManager;
|
||||||
|
import android.support.v4.app.ShareCompat;
|
||||||
import android.support.v4.content.CursorLoader;
|
import android.support.v4.content.CursorLoader;
|
||||||
import android.support.v4.content.Loader;
|
import android.support.v4.content.Loader;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
import android.support.v7.widget.LinearLayoutManager;
|
import android.support.v7.widget.LinearLayoutManager;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
|
import android.view.Menu;
|
||||||
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import org.fdroid.fdroid.FDroidApp;
|
import org.fdroid.fdroid.FDroidApp;
|
||||||
import org.fdroid.fdroid.R;
|
import org.fdroid.fdroid.R;
|
||||||
|
import org.fdroid.fdroid.data.App;
|
||||||
import org.fdroid.fdroid.data.AppProvider;
|
import org.fdroid.fdroid.data.AppProvider;
|
||||||
import org.fdroid.fdroid.data.Schema;
|
import org.fdroid.fdroid.data.Schema;
|
||||||
|
|
||||||
@ -100,4 +103,35 @@ public class InstalledAppsActivity extends AppCompatActivity implements LoaderMa
|
|||||||
adapter.setApps(null);
|
adapter.setApps(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
|
getMenuInflater().inflate(R.menu.installed_apps, menu);
|
||||||
|
return super.onCreateOptionsMenu(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
|
|
||||||
|
switch (item.getItemId()) {
|
||||||
|
case R.id.menu_share:
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
stringBuilder.append("packageName,versionCode,versionName\n");
|
||||||
|
for (int i = 0; i < adapter.getItemCount(); i++) {
|
||||||
|
App app = adapter.getItem(i);
|
||||||
|
if (app != null) {
|
||||||
|
stringBuilder.append(app.packageName).append(',')
|
||||||
|
.append(app.installedVersionCode).append(',')
|
||||||
|
.append(app.installedVersionName).append('\n');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ShareCompat.IntentBuilder intentBuilder = ShareCompat.IntentBuilder.from(this)
|
||||||
|
.setSubject(getString(R.string.send_installed_apps))
|
||||||
|
.setChooserTitle(R.string.send_installed_apps)
|
||||||
|
.setText(stringBuilder.toString())
|
||||||
|
.setType("text/csv");
|
||||||
|
startActivity(intentBuilder.getIntent());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return super.onOptionsItemSelected(item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
9
app/src/main/res/menu/installed_apps.xml
Normal file
9
app/src/main/res/menu/installed_apps.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_share"
|
||||||
|
android:icon="@drawable/ic_share_white"
|
||||||
|
android:title="@string/menu_share"
|
||||||
|
app:showAsAction="ifRoom"/>
|
||||||
|
|
||||||
|
</menu>
|
@ -110,6 +110,8 @@ This often occurs with apps installed via Google Play or other sources, if they
|
|||||||
<string name="app_list__dismiss_downloading_app">Download canceled</string>
|
<string name="app_list__dismiss_downloading_app">Download canceled</string>
|
||||||
|
|
||||||
<string name="installed_apps__activity_title">Installed Apps</string>
|
<string name="installed_apps__activity_title">Installed Apps</string>
|
||||||
|
<string name="send_installed_apps">Share installed apps</string>
|
||||||
|
<string name="send_installed_apps_csv">Apps installed by F-Droid as CSV file</string>
|
||||||
<string name="installed_app__updates_ignored">Updates ignored</string>
|
<string name="installed_app__updates_ignored">Updates ignored</string>
|
||||||
<string name="installed_app__updates_ignored_for_suggested_version">Updates ignored for Version %1$s</string>
|
<string name="installed_app__updates_ignored_for_suggested_version">Updates ignored for Version %1$s</string>
|
||||||
<!-- The inline download button shown in the "Updates" screen only uses an icon and so requires
|
<!-- The inline download button shown in the "Updates" screen only uses an icon and so requires
|
||||||
|
Loading…
x
Reference in New Issue
Block a user