2014-04-19 14 views
-1

我想使用一些在線教程和我在網上找到的一些反編譯代碼首次製作一個簡單的小部件。但是我在下面的這個方法遇到了麻煩。我收到錯誤無法訪問的代碼。WiFi開關小部件...無法訪問的代碼

private void Update(Context paramContext, AppWidgetManager paramAppWidgetManager, int[] paramArrayOfInt) 
     { 
     RemoteViews localRemoteViews = new RemoteViews(paramContext.getPackageName(), R.xml.widget); 
     WifiManager localWifiManager = (WifiManager)paramContext.getSystemService("wifi"); 
     try 
     { 
      int i = localWifiManager.getWifiState(); 
      if (i == 3) 
      { 
      localRemoteViews.setImageViewResource(R.xml.widget, R.drawable.off); 
      link(localRemoteViews, paramContext, paramAppWidgetManager); 
      if ((paramArrayOfInt == null) || (paramArrayOfInt.length <= 0)) 
       break; 
      paramAppWidgetManager.updateAppWidget(paramArrayOfInt, localRemoteViews); 
      } 
      while (true) 
      { 
      return; 
      if (i == 1) 
      { 
       localRemoteViews.setImageViewResource(R.xml.widget, R.drawable.on); 
       break; 
      } 
      localRemoteViews.setImageViewResource(R.xml.widget, R.drawable.off); 
      break; 
      paramAppWidgetManager.updateAppWidget(this.THIS_WIDGET, localRemoteViews); 
      } 
     } 
     catch (Exception localException) 
     { 
      break; 
     } 
     } 

這是全班同學:

package com.wifiswitch.bestwifiswitch; 

import android.app.PendingIntent; 
import android.appwidget.AppWidgetManager; 
import android.appwidget.AppWidgetProvider; 
import android.content.ComponentName; 
import android.content.Context; 
import android.content.Intent; 
import android.net.wifi.WifiManager; 
import android.os.Bundle; 
import android.widget.RemoteViews; 

public class WifiWidget extends AppWidgetProvider { 

    static final String THIS_INTENT = "com.wifiswitch.bestwifiswitch.toggle"; 
    final ComponentName THIS_WIDGET = new ComponentName("com.wifiswitch.bestwifiswitch", "com.wifiswitch.bestwifiswitch.WifiWidget"); 

    private void Toggle(Context paramContext, String paramString) 
     { 
     if ("com.wifiswitch.bestwifiswitch.toggle".equals(paramString)) 
     { 
      WifiManager localWifiManager = (WifiManager)paramContext.getSystemService("wifi"); 
      try 
      { 
      int i = localWifiManager.getWifiState(); 
      if (i == 3) 
       localWifiManager.setWifiEnabled(false); 
      else if (i == 1) 
       localWifiManager.setWifiEnabled(true); 
      } 
      catch (Exception localException) 
      { 
      } 
     } 
     } 

    private void Update(Context paramContext, AppWidgetManager paramAppWidgetManager, int[] paramArrayOfInt) 
     { 
     RemoteViews localRemoteViews = new RemoteViews(paramContext.getPackageName(), R.xml.widget); 
     WifiManager localWifiManager = (WifiManager)paramContext.getSystemService("wifi"); 
     try 
     { 
      int i = localWifiManager.getWifiState(); 
      if (i == 3) 
      { 
      localRemoteViews.setImageViewResource(R.xml.widget, R.drawable.off); 
      link(localRemoteViews, paramContext, paramAppWidgetManager); 
      if ((paramArrayOfInt == null) || (paramArrayOfInt.length <= 0)) 
       break; 
      paramAppWidgetManager.updateAppWidget(paramArrayOfInt, localRemoteViews); 
      } 
      while (true) 
      { 
      return; 
      if (i == 1) 
      { 
       localRemoteViews.setImageViewResource(R.xml.widget, R.drawable.on); 
       break; 
      } 
      localRemoteViews.setImageViewResource(R.xml.widget, R.drawable.off); 
      break; 
      paramAppWidgetManager.updateAppWidget(this.THIS_WIDGET, localRemoteViews); 
      } 
     } 
     catch (Exception localException) 
     { 
      break; 
     } 
     } 

    private void link(RemoteViews paramRemoteViews, Context paramContext, AppWidgetManager paramAppWidgetManager) 
     { 
     Intent localIntent = new Intent("com.wifiswitch.bestwifiswitch.toggle"); 
     localIntent.setComponent(this.THIS_WIDGET); 
     paramRemoteViews.setOnClickPendingIntent(2131099648, PendingIntent.getBroadcast(paramContext, 0, localIntent, 0)); 
     } 

    public void onReceive(Context paramContext, Intent paramIntent) 
     { 
     String str = paramIntent.getAction(); 
     if ("android.appwidget.action.APPWIDGET_UPDATE".equals(str)) 
     { 
      Bundle localBundle = paramIntent.getExtras(); 
      if (localBundle != null) 
      { 
      int[] arrayOfInt = localBundle.getIntArray("appWidgetIds"); 
      if ((arrayOfInt != null) && (arrayOfInt.length > 0)) 
       onUpdate(paramContext, AppWidgetManager.getInstance(paramContext), arrayOfInt); 
      } 
     } 
     while (true) 
     { 
      return; 
      if ("com.wifiswitch.bestwifiswitch.toggle".equals(str)) 
      { 
      Toggle(paramContext, "com.roundedlabs.widgets.wifi.toggle"); 
      Update(paramContext, AppWidgetManager.getInstance(paramContext), null); 
      } 
      else 
      { 
      Update(paramContext, AppWidgetManager.getInstance(paramContext), null); 
      } 
     } 
     } 

    public void onUpdate(Context paramContext, AppWidgetManager paramAppWidgetManager, int[] paramArrayOfInt) 
     { 
     Update(paramContext, paramAppWidgetManager, paramArrayOfInt); 
     } 




} 

回答

-1

的一個問題是,在onUpdate方法break語句。 break語句將打破循環或切換語句。在你的代碼中,你需要從方法中返回。所以,將休息時間改爲退貨。

其他問題是用onUpdateonReceive的方法。如果while(true)返回,這將打破循環並返回,這樣就不會達到下一個語句。您需要在此刪除返回語句,或者根據任何條件更改您的邏輯以返回。

while (true) 
{ 
    return; 
    if ("com.wifiswitch.bestwifiswitch.toggle".equals(str)) 
    { 
      Toggle(paramContext, "com.roundedlabs.widgets.wifi.toggle"); 
      Update(paramContext, AppWidgetManager.getInstance(paramContext), null); 
    }