Start onActivityResult after the completion of loop
Clash Royale CLAN TAG#URR8PPP
Start onActivityResult after the completion of loop
I have a buttonClickListener
that is intended to uninstall multiple apps so I've run a for loop for that and I want to start onActivityResult
after the completion of all uninstallation process. SO far onActivityResult
runs after each uninstallation. I want only one onActivityResult
at the end. Is there any way I can do that?
buttonClickListener
onActivityResult
onActivityResult
onActivityResult
btnSelection.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
for (int i = 0; i < appList.size(); i++)
AllApps singleApp= appList.get(i);
if (singleApp.isSelected())
String app_pkg_name = singleApp.getPackageName();
Intent intent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE);
intent.setData(Uri.parse("package:" + app_pkg_name));
intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
startActivityForResult(intent, UNINSTALL_REQUEST_CODE);
);
And this is the onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data)
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==UNINSTALL_REQUEST_CODE)
//things to do
3 Answers
3
First , is not possible but you can just simply execute onActivityResult
for the last command and in order to do that, you need to have a filtered list first
onActivityResult
btnSelection.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
// filter selected apps
List<AllApps> temp = new ArrayList<>();
for(AllApps app : appList)
if(app.isSelected())
temp.add(app);
// invoke app uninstallations
for (int i = 0; i < temp.size()-1; i++)
startActivity(uninstallAppIntent(temp.get(i)));
// invoke get result for last entry
startActivityForResult(uninstallAppIntent(temp.get(temp.size()-1)), UNINSTALL_REQUEST_CODE);
);
// to avoid code duplicity
Intent uninstallAppIntent(Allapps singleApp)
String app_pkg_name = singleApp.getPackageName();
Intent intent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE);
intent.setData(Uri.parse("package:" + app_pkg_name));
intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
return intent;
One possible solution:
You can put variable i
on data of intent and check if i==app.size()
on onActivityResult
.
i
i==app.size()
onActivityResult
Its A Simple use case of a If
statement . you can take a boolean
or just check appropriate condition. Checkout the code below .
If
boolean
btnSelection.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
AllApps singleApp=null;
for (int i = 0; i < appList.size(); i++)
if (appList.get(i).isSelected())
singleApp=appList.get(i);
if(singleApp!=null)
String app_pkg_name = singleApp.getPackageName();
Intent intent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE);
intent.setData(Uri.parse("package:" + app_pkg_name));
intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
startActivityForResult(intent, UNINSTALL_REQUEST_CODE);
);
NOTE IF appList
contains multiple selected items then the last indexed item will be used . In this case if you want first selected item the you should break
the loop .
appList
break
I have provided the logic only . i don't think multiple apps can be uninstalled at once . So it should be done one by one .
– ADM
Aug 10 at 4:25
I think it would a good idea to add the logic to accomplish the task to keep only the last selected object for result
– Pavneet_Singh
Aug 10 at 4:28
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
you are not triggering uninstall for other apps
– Pavneet_Singh
Aug 10 at 4:24