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