2014-11-11 3 views
1

위젯이 사용자가 두 번 탭했을 때만 내 위젯이 열리길 원합니다. 어떻게 구현합니까? 다음은 지금까지 가지고있는 일반적인 단일 탭 위젯 코드입니다.위젯을 두 번 탭하면 안드로이드 앱이 열려야합니다.

@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); 

    } 

} 어떤 도움을 appreciated.thank됩니다.!

답변

0

이 코드를 시도 :

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); 

    } 
    } 

은 내가 this answer

+0

에서 그것을 얻을 당신이 환영 당신 : –

+0

을 works.thank! :) – Rami

관련 문제