FeedbackManager.java 9.27 KB
package net.hockeyapp.android;

import android.app.Activity;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.media.MediaScannerConnection;
import android.media.MediaScannerConnection.MediaScannerConnectionClient;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.Window;
import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import net.hockeyapp.android.objects.FeedbackUserDataElement;
import net.hockeyapp.android.tasks.ParseFeedbackTask;
import net.hockeyapp.android.tasks.SendFeedbackTask;
import net.hockeyapp.android.utils.AsyncTaskUtils;
import net.hockeyapp.android.utils.HockeyLog;
import net.hockeyapp.android.utils.PrefsUtil;
import net.hockeyapp.android.utils.Util;

public class FeedbackManager
{
  private static BroadcastReceiver a = null;
  private static Activity b;
  private static boolean c = false;
  private static String d = null;
  private static String e = null;
  private static FeedbackUserDataElement f;
  private static FeedbackUserDataElement g;
  private static String h;
  private static String i;
  private static FeedbackManagerListener j = null;
  
  private static String b()
  {
    return e + "api/2/apps/" + d + "/feedback/";
  }
  
  public static void checkForAnswersAndNotify(Context paramContext)
  {
    String str = PrefsUtil.getInstance().getFeedbackTokenFromPrefs(paramContext);
    if (str == null) {
      return;
    }
    int k = paramContext.getSharedPreferences("net.hockeyapp.android.feedback", 0).getInt("idLastMessageSend", -1);
    paramContext = new SendFeedbackTask(paramContext, b(), null, null, null, null, null, str, new Handler()
    {
      public final void handleMessage(Message paramAnonymousMessage)
      {
        paramAnonymousMessage = paramAnonymousMessage.getData().getString("feedback_response");
        if (paramAnonymousMessage != null)
        {
          paramAnonymousMessage = new ParseFeedbackTask(this.a, paramAnonymousMessage, null, "fetch");
          paramAnonymousMessage.setUrlString(FeedbackManager.a());
          AsyncTaskUtils.execute(paramAnonymousMessage);
        }
      }
    }, true);
    paramContext.setShowProgressDialog(false);
    paramContext.setLastMessageId(k);
    AsyncTaskUtils.execute(paramContext);
  }
  
  public static FeedbackManagerListener getLastListener()
  {
    return j;
  }
  
  public static FeedbackUserDataElement getRequireUserEmail()
  {
    return g;
  }
  
  public static FeedbackUserDataElement getRequireUserName()
  {
    return f;
  }
  
  public static void register(Context paramContext)
  {
    String str = Util.getAppIdentifier(paramContext);
    if ((str == null) || (str.length() == 0)) {
      throw new IllegalArgumentException("HockeyApp app identifier was not configured correctly in manifest or build configuration.");
    }
    register(paramContext, str);
  }
  
  public static void register(Context paramContext, String paramString)
  {
    register(paramContext, paramString, null);
  }
  
  public static void register(Context paramContext, String paramString1, String paramString2, FeedbackManagerListener paramFeedbackManagerListener)
  {
    if (paramContext != null)
    {
      d = Util.sanitizeAppIdentifier(paramString2);
      e = paramString1;
      j = paramFeedbackManagerListener;
      Constants.loadFromContext(paramContext);
    }
  }
  
  public static void register(Context paramContext, String paramString, FeedbackManagerListener paramFeedbackManagerListener)
  {
    register(paramContext, "https://sdk.hockeyapp.net/", paramString, paramFeedbackManagerListener);
  }
  
  public static void setActivityForScreenshot(Activity paramActivity)
  {
    b = paramActivity;
    if (!c)
    {
      c = true;
      paramActivity = (NotificationManager)b.getSystemService("notification");
      int k = b.getResources().getIdentifier("ic_menu_camera", "drawable", "android");
      Object localObject = new Intent();
      ((Intent)localObject).setAction("net.hockeyapp.android.SCREENSHOT");
      localObject = PendingIntent.getBroadcast(b, 1, (Intent)localObject, 1073741824);
      paramActivity.notify(1, Util.createNotification(b, (PendingIntent)localObject, "HockeyApp Feedback", "Take a screenshot for your feedback.", k));
      if (a == null) {
        a = new BroadcastReceiver()
        {
          public final void onReceive(Context paramAnonymousContext, Intent paramAnonymousIntent)
          {
            FeedbackManager.takeScreenshot(paramAnonymousContext);
          }
        };
      }
      b.registerReceiver(a, new IntentFilter("net.hockeyapp.android.SCREENSHOT"));
    }
  }
  
  public static void setRequireUserEmail(FeedbackUserDataElement paramFeedbackUserDataElement)
  {
    g = paramFeedbackUserDataElement;
  }
  
  public static void setRequireUserName(FeedbackUserDataElement paramFeedbackUserDataElement)
  {
    f = paramFeedbackUserDataElement;
  }
  
  public static void setUserEmail(String paramString)
  {
    i = paramString;
  }
  
  public static void setUserName(String paramString)
  {
    h = paramString;
  }
  
  public static void showFeedbackActivity(Context paramContext, Bundle paramBundle, Uri... paramVarArgs)
  {
    if (paramContext != null)
    {
      Object localObject1 = null;
      if (j != null) {
        localObject1 = j.getFeedbackActivityClass();
      }
      Object localObject2 = localObject1;
      if (localObject1 == null) {
        localObject2 = FeedbackActivity.class;
      }
      localObject1 = new Intent();
      if ((paramBundle != null) && (!paramBundle.isEmpty())) {
        ((Intent)localObject1).putExtras(paramBundle);
      }
      ((Intent)localObject1).setFlags(268435456);
      ((Intent)localObject1).setClass(paramContext, (Class)localObject2);
      ((Intent)localObject1).putExtra("url", b());
      ((Intent)localObject1).putExtra("initialUserName", h);
      ((Intent)localObject1).putExtra("initialUserEmail", i);
      ((Intent)localObject1).putExtra("initialAttachments", paramVarArgs);
      paramContext.startActivity((Intent)localObject1);
    }
  }
  
  public static void showFeedbackActivity(Context paramContext, Uri... paramVarArgs)
  {
    showFeedbackActivity(paramContext, null, paramVarArgs);
  }
  
  public static void takeScreenshot(final Context paramContext)
  {
    Object localObject1 = b.getWindow().getDecorView();
    ((View)localObject1).setDrawingCacheEnabled(true);
    Object localObject2 = ((View)localObject1).getDrawingCache();
    Object localObject3 = b.getLocalClassName();
    File localFile = Constants.getHockeyAppStorageDir();
    localObject1 = new File(localFile, (String)localObject3 + ".jpg");
    int k = 1;
    while (((File)localObject1).exists())
    {
      localObject1 = new File(localFile, (String)localObject3 + "_" + k + ".jpg");
      k += 1;
    }
    new AsyncTask()
    {
      private Boolean a(File... paramAnonymousVarArgs)
      {
        try
        {
          paramAnonymousVarArgs = new FileOutputStream(paramAnonymousVarArgs[0]);
          this.a.compress(Bitmap.CompressFormat.JPEG, 100, paramAnonymousVarArgs);
          paramAnonymousVarArgs.close();
          return Boolean.valueOf(true);
        }
        catch (IOException paramAnonymousVarArgs)
        {
          HockeyLog.error("Could not save screenshot.", paramAnonymousVarArgs);
        }
        return Boolean.valueOf(false);
      }
    }.execute(new File[] { localObject1 });
    localObject2 = new a(((File)localObject1).getAbsolutePath(), (byte)0);
    localObject3 = new MediaScannerConnection(b, (MediaScannerConnection.MediaScannerConnectionClient)localObject2);
    ((a)localObject2).a = ((MediaScannerConnection)localObject3);
    ((MediaScannerConnection)localObject3).connect();
    Toast.makeText(paramContext, "Screenshot '" + ((File)localObject1).getName() + "' is available in gallery.", 1).show();
  }
  
  public static void unregister()
  {
    j = null;
  }
  
  public static void unsetCurrentActivityForScreenshot(Activity paramActivity)
  {
    if ((b == null) || (b != paramActivity)) {
      return;
    }
    c = false;
    b.unregisterReceiver(a);
    ((NotificationManager)b.getSystemService("notification")).cancel(1);
    b = null;
  }
  
  static final class a
    implements MediaScannerConnection.MediaScannerConnectionClient
  {
    MediaScannerConnection a = null;
    private String b;
    
    private a(String paramString)
    {
      this.b = paramString;
    }
    
    public final void onMediaScannerConnected()
    {
      if (this.a != null) {
        this.a.scanFile(this.b, null);
      }
    }
    
    public final void onScanCompleted(String paramString, Uri paramUri)
    {
      HockeyLog.verbose(String.format("Scanned path %s -> URI = %s", new Object[] { paramString, paramUri.toString() }));
      this.a.disconnect();
    }
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/net/hockeyapp/android/FeedbackManager.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */