1

I want my widget to open the application only when the user double taps on it.How do i implement it? Below is the code for normal single tap widget which i have till now.

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
    int[] appWidgetIds) 
{
    super.onUpdate(context, appWidgetManager, appWidgetIds);
    final int n=appWidgetIds.length;
    for(int i=0;i<n;i++)
    {   
        int awid=appWidgetIds[i];
        RemoteViews v=new RemoteViews(context.getPackageName(),R.layout.widget);
        Intent in=new Intent(context,MainActivity.class);
        PendingIntent pi=PendingIntent.getActivity(context,0,in,0);
        v.setOnClickPendingIntent(R.id.bopen, pi);
        appWidgetManager.updateAppWidget(awid,v);

    }

} Any help will be appreciated.thank you.!

1 Answers1

0

try this code:

public class WidgetProvider extends AppWidgetProvider {

    private static final int DOUBLE_CLICK_DELAY = 500;

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {


        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
        Intent intent = new Intent(context, getClass());
        intent.setAction("Click");
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
        views.setOnClickPendingIntent(R.id.image, pendingIntent);
        appWidgetManager.updateAppWidget(appWidgetIds, views);
        context.getSharedPreferences("widget", 0).edit().putInt("clicks", 0).commit();

    }

    @Override
    public void onReceive(final Context context, Intent intent) {

        if (intent.getAction().equals("Click")) {

            int clickCount = context.getSharedPreferences("widget", Context.MODE_PRIVATE).getInt("clicks", 0);
            context.getSharedPreferences("widget", Context.MODE_PRIVATE).edit().putInt("clicks", ++clickCount).commit();

            final Handler handler = new Handler() {
                public void handleMessage(Message msg) {

                    int clickCount = context.getSharedPreferences("widget", Context.MODE_PRIVATE).getInt("clicks", 0);

                    if (clickCount > 1) Toast.makeText(context, "doubleClick", Toast.LENGTH_SHORT).show();
                    else Toast.makeText(context, "singleClick", Toast.LENGTH_SHORT).show();

                    context.getSharedPreferences("widget", Context.MODE_PRIVATE).edit().putInt("clicks", 0).commit();
                }
            };

            if (clickCount == 1) new Thread() {
                @Override
                public void run(){
                    try {
                        synchronized(this) { wait(DOUBLE_CLICK_DELAY); }
                        handler.sendEmptyMessage(0);
                    } catch(InterruptedException ex) {}
                }
            }.start();
        }

        super.onReceive(context, intent);

    }
    }

i get it from this answer

Community
  • 1
  • 1
Rami
  • 7,879
  • 12
  • 36
  • 66