Add Nearby to share (if applicable)
This commit is contained in:
		
							parent
							
								
									46308dcbde
								
							
						
					
					
						commit
						5a0b625dc0
					
				| @ -3,6 +3,7 @@ package org.fdroid.fdroid; | ||||
| import android.annotation.SuppressLint; | ||||
| import android.app.Activity; | ||||
| import android.app.PendingIntent; | ||||
| import android.bluetooth.BluetoothAdapter; | ||||
| import android.content.ActivityNotFoundException; | ||||
| import android.content.BroadcastReceiver; | ||||
| import android.content.Context; | ||||
| @ -35,6 +36,7 @@ import android.view.Menu; | ||||
| import android.view.MenuItem; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.view.Window; | ||||
| import android.widget.Button; | ||||
| import android.widget.ImageView; | ||||
| import android.widget.LinearLayout; | ||||
| @ -68,13 +70,15 @@ import java.util.ArrayList; | ||||
| 
 | ||||
| import static android.support.v7.widget.RecyclerView.NO_POSITION; | ||||
| 
 | ||||
| public class AppDetails2 extends AppCompatActivity { | ||||
| public class AppDetails2 extends AppCompatActivity implements ShareChooserDialog.ShareChooserDialogListener { | ||||
| 
 | ||||
|     private static final String TAG = "AppDetails2"; | ||||
| 
 | ||||
|     private static final int REQUEST_ENABLE_BLUETOOTH = 2; | ||||
|     private static final int REQUEST_PERMISSION_DIALOG = 3; | ||||
|     private static final int REQUEST_UNINSTALL_DIALOG = 4; | ||||
| 
 | ||||
|     private FDroidApp mFDroidApp; | ||||
|     private App mApp; | ||||
|     private RecyclerView mRecyclerView; | ||||
|     private AppDetailsRecyclerViewAdapter mAdapter; | ||||
| @ -83,6 +87,8 @@ public class AppDetails2 extends AppCompatActivity { | ||||
| 
 | ||||
|     @Override | ||||
|     protected void onCreate(Bundle savedInstanceState) { | ||||
|         mFDroidApp = (FDroidApp) getApplication(); | ||||
|         //mFDroidApp.applyTheme(this); | ||||
|         super.onCreate(savedInstanceState); | ||||
|         setContentView(R.layout.app_details2); | ||||
|         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); | ||||
| @ -160,12 +166,31 @@ public class AppDetails2 extends AppCompatActivity { | ||||
|             shareIntent.setType("text/plain"); | ||||
|             shareIntent.putExtra(Intent.EXTRA_SUBJECT, mApp.name); | ||||
|             shareIntent.putExtra(Intent.EXTRA_TEXT, mApp.name + " (" + mApp.summary + ") - https://f-droid.org/app/" + mApp.packageName); | ||||
|             ShareChooserDialog.createChooser((CoordinatorLayout) findViewById(R.id.rootCoordinator), this, shareIntent); | ||||
| 
 | ||||
|             boolean showNearbyItem = mApp.isInstalled() && mFDroidApp.bluetoothAdapter != null; | ||||
|             ShareChooserDialog.createChooser((CoordinatorLayout) findViewById(R.id.rootCoordinator), this, this, shareIntent, showNearbyItem); | ||||
|             return true; | ||||
|         } | ||||
|         return super.onOptionsItemSelected(item); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void onNearby() { | ||||
|         /* | ||||
|                  * If Bluetooth has not been enabled/turned on, then | ||||
|                  * enabling device discoverability will automatically enable Bluetooth | ||||
|                  */ | ||||
|         Intent discoverBt = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); | ||||
|         discoverBt.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 121); | ||||
|         startActivityForResult(discoverBt, REQUEST_ENABLE_BLUETOOTH); | ||||
|         // if this is successful, the Bluetooth transfer is started | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void onResolvedShareIntent(Intent shareIntent) { | ||||
|         startActivity(shareIntent); | ||||
|     } | ||||
| 
 | ||||
|     public class AppDetailsRecyclerViewAdapter | ||||
|             extends RecyclerView.Adapter<RecyclerView.ViewHolder> { | ||||
| 
 | ||||
| @ -715,9 +740,9 @@ public class AppDetails2 extends AppCompatActivity { | ||||
|     @Override | ||||
|     protected void onActivityResult(int requestCode, int resultCode, Intent data) { | ||||
|         switch (requestCode) { | ||||
|             //case REQUEST_ENABLE_BLUETOOTH: | ||||
|             //    fdroidApp.sendViaBluetooth(this, resultCode, app.packageName); | ||||
|             //    break; | ||||
|             case REQUEST_ENABLE_BLUETOOTH: | ||||
|                 mFDroidApp.sendViaBluetooth(this, resultCode, mApp.packageName); | ||||
|                 break; | ||||
|             case REQUEST_PERMISSION_DIALOG: | ||||
|                 if (resultCode == Activity.RESULT_OK) { | ||||
|                     Uri uri = data.getData(); | ||||
|  | ||||
| @ -15,6 +15,7 @@ import android.support.v7.app.AppCompatActivity; | ||||
| import android.support.v7.widget.GridLayoutManager; | ||||
| import android.support.v7.widget.RecyclerView; | ||||
| import android.view.LayoutInflater; | ||||
| import android.view.Menu; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.widget.ImageView; | ||||
| @ -31,9 +32,12 @@ public class ShareChooserDialog extends BottomSheetDialogFragment { | ||||
|     private RecyclerView mRecyclerView; | ||||
|     private ArrayList<ResolveInfo> mTargets; | ||||
|     private int mParentWidth; | ||||
|     private Intent mShareIntent; | ||||
|     private boolean mShowNearby; | ||||
| 
 | ||||
|     public interface ShareChooserDialogListener { | ||||
|         void onItemSelected(ResolveInfo ri); | ||||
|         void onNearby(); | ||||
|         void onResolvedShareIntent(Intent shareIntent); | ||||
|     } | ||||
|     private ShareChooserDialogListener mListener; | ||||
| 
 | ||||
| @ -49,9 +53,10 @@ public class ShareChooserDialog extends BottomSheetDialogFragment { | ||||
|     public void onCreate(@Nullable Bundle savedInstanceState) { | ||||
|         super.onCreate(savedInstanceState); | ||||
|         mParentWidth = getArguments().getInt("width", 640); | ||||
|         Intent intent = getArguments().getParcelable("intent"); | ||||
|         mShareIntent = getArguments().getParcelable("intent"); | ||||
|         mShowNearby = getArguments().getBoolean("showNearby", false); | ||||
|         mTargets = new ArrayList<>(); | ||||
|         List<ResolveInfo> resInfo = getContext().getPackageManager().queryIntentActivities(intent, 0); | ||||
|         List<ResolveInfo> resInfo = getContext().getPackageManager().queryIntentActivities(mShareIntent, 0); | ||||
|         if (resInfo != null && resInfo.size() > 0) { | ||||
|             for (ResolveInfo resolveInfo : resInfo) { | ||||
|                 String packageName = resolveInfo.activityInfo.packageName; | ||||
| @ -123,7 +128,9 @@ public class ShareChooserDialog extends BottomSheetDialogFragment { | ||||
| 
 | ||||
|             RecyclerView.Adapter init(List<ResolveInfo> targetedShareIntents) { | ||||
|                 mIntents = new ArrayList<>(); | ||||
|                 mIntents.add("Nearby"); | ||||
|                if (mShowNearby) { | ||||
|                    mIntents.add("Nearby (string contents do not matter!)"); | ||||
|                } | ||||
|                 for (ResolveInfo ri : targetedShareIntents) { | ||||
|                     mIntents.add(ri); | ||||
|                 } | ||||
| @ -146,7 +153,15 @@ public class ShareChooserDialog extends BottomSheetDialogFragment { | ||||
|             @Override | ||||
|             public void onBindViewHolder(VH holder, int position) { | ||||
|                 if (getItemViewType(position) == 1) { | ||||
|                     //holder.label.setText((CharSequence)mIntents.get(position)); | ||||
|                     holder.itemView.setOnClickListener(new View.OnClickListener() { | ||||
|                         @Override | ||||
|                         public void onClick(View v) { | ||||
|                             if (mListener != null) { | ||||
|                                 mListener.onNearby(); | ||||
|                             } | ||||
|                             dismiss(); | ||||
|                         } | ||||
|                     }); | ||||
|                     return; | ||||
|                 } | ||||
|                 final ResolveInfo ri = (ResolveInfo) mIntents.get(position); | ||||
| @ -155,8 +170,13 @@ public class ShareChooserDialog extends BottomSheetDialogFragment { | ||||
|                 holder.itemView.setOnClickListener(new View.OnClickListener() { | ||||
|                     @Override | ||||
|                     public void onClick(View view) { | ||||
|                         if (mListener != null) | ||||
|                             mListener.onItemSelected(ri); | ||||
|                         if (mListener != null) { | ||||
|                             Intent intent = new Intent(mShareIntent); | ||||
|                             ComponentName name = new ComponentName(ri.activityInfo.applicationInfo.packageName, | ||||
|                                     ri.activityInfo.name); | ||||
|                             intent.setComponent(name); | ||||
|                             mListener.onResolvedShareIntent(intent); | ||||
|                         } | ||||
|                         dismiss(); | ||||
|                     } | ||||
|                 }); | ||||
| @ -170,25 +190,13 @@ public class ShareChooserDialog extends BottomSheetDialogFragment { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     public static void createChooser(CoordinatorLayout rootView, final AppCompatActivity parent, final Intent shareIntent) { | ||||
|     public static void createChooser(CoordinatorLayout rootView, ShareChooserDialog.ShareChooserDialogListener listener, final AppCompatActivity parent, final Intent shareIntent, boolean showNearbyItem) { | ||||
|         ShareChooserDialog d = new ShareChooserDialog(); | ||||
|         d.setListener(new ShareChooserDialog.ShareChooserDialogListener() { | ||||
|             @Override | ||||
|             public void onItemSelected(final ResolveInfo ri) { | ||||
|                 startActivityForResolveInfo(ri); | ||||
|             } | ||||
| 
 | ||||
|             private void startActivityForResolveInfo(ResolveInfo ri) { | ||||
|                 Intent intent = new Intent(shareIntent); | ||||
|                 ComponentName name = new ComponentName(ri.activityInfo.applicationInfo.packageName, | ||||
|                         ri.activityInfo.name); | ||||
|                 intent.setComponent(name); | ||||
|                 parent.startActivity(intent); | ||||
|             } | ||||
|         }); | ||||
|         d.setListener(listener); | ||||
|         Bundle args = new Bundle(); | ||||
|         args.putInt("width", rootView.getWidth()); | ||||
|         args.putParcelable("intent", shareIntent); | ||||
|         args.putBoolean("showNearby", showNearbyItem); | ||||
|         d.setArguments(args); | ||||
|         d.show(parent.getSupportFragmentManager(), "Share"); | ||||
|     } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 mvp76
						mvp76