26 |
26 |
import android.support.v4.app.ListFragment;
|
27 |
27 |
import android.support.v4.app.LoaderManager.LoaderCallbacks;
|
28 |
28 |
import android.support.v4.content.Loader;
|
|
29 |
import android.view.ContextMenu;
|
|
30 |
import android.view.ContextMenu.ContextMenuInfo;
|
|
31 |
import android.view.MenuInflater;
|
|
32 |
import android.view.MenuItem;
|
29 |
33 |
import android.view.View;
|
30 |
34 |
import android.webkit.WebView;
|
31 |
|
import android.widget.AdapterView;
|
32 |
|
import android.widget.AdapterView.OnItemLongClickListener;
|
|
35 |
import android.widget.AdapterView.AdapterContextMenuInfo;
|
33 |
36 |
import android.widget.ListView;
|
34 |
37 |
|
35 |
38 |
import java.util.List;
|
36 |
39 |
|
37 |
|
public class AppListFragment extends ListFragment
|
38 |
|
implements LoaderCallbacks<List<AppEntry>>, OnItemLongClickListener {
|
|
40 |
public class AppListFragment extends ListFragment implements LoaderCallbacks<List<AppEntry>> {
|
39 |
41 |
|
40 |
42 |
private AppListAdapter adapter;
|
41 |
43 |
WebView androidObservatoryView;
|
... | ... | |
50 |
52 |
setListAdapter(adapter);
|
51 |
53 |
setListShown(false);
|
52 |
54 |
|
53 |
|
getListView().setOnItemLongClickListener(this);
|
|
55 |
registerForContextMenu(getListView());
|
54 |
56 |
|
55 |
57 |
// Prepare the loader
|
56 |
58 |
// either reconnect with an existing one or start a new one
|
... | ... | |
58 |
60 |
}
|
59 |
61 |
|
60 |
62 |
@Override
|
|
63 |
public void onCreateContextMenu(ContextMenu menu, View v,
|
|
64 |
ContextMenuInfo menuInfo) {
|
|
65 |
super.onCreateContextMenu(menu, v, menuInfo);
|
|
66 |
MenuInflater inflater = getActivity().getMenuInflater();
|
|
67 |
inflater.inflate(R.menu.context, menu);
|
|
68 |
}
|
|
69 |
|
|
70 |
@Override
|
|
71 |
public boolean onContextItemSelected(MenuItem item) {
|
|
72 |
AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
|
|
73 |
AppEntry appEntry = (AppEntry) adapter.getItem(menuInfo.position);
|
|
74 |
Intent intent = new Intent(getActivity(), WebViewActivity.class);
|
|
75 |
switch (item.getItemId()) {
|
|
76 |
case R.id.by_apk_hash:
|
|
77 |
byApkHash(appEntry, intent);
|
|
78 |
break;
|
|
79 |
case R.id.by_package_name:
|
|
80 |
byPackageName(appEntry, intent);
|
|
81 |
break;
|
|
82 |
case R.id.by_signing_certificate:
|
|
83 |
bySigningCertificate(appEntry, intent);
|
|
84 |
break;
|
|
85 |
}
|
|
86 |
return true;
|
|
87 |
}
|
|
88 |
|
|
89 |
@Override
|
61 |
90 |
public void onListItemClick(ListView l, View v, int position, long id) {
|
62 |
91 |
AppEntry appEntry = (AppEntry) adapter.getItem(position);
|
63 |
92 |
Intent intent = new Intent(getActivity(), WebViewActivity.class);
|
|
93 |
byApkHash(appEntry, intent);
|
|
94 |
}
|
|
95 |
|
|
96 |
private void byApkHash(AppEntry appEntry, Intent intent) {
|
64 |
97 |
String urlString = "https://androidobservatory.org/?searchby=binhash&q="
|
65 |
98 |
+ Utils.getBinaryHash(appEntry.getApkFile(), "sha1");
|
66 |
99 |
intent.setData(Uri.parse(urlString));
|
... | ... | |
68 |
101 |
startActivity(intent);
|
69 |
102 |
}
|
70 |
103 |
|
71 |
|
@Override
|
72 |
|
public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
|
73 |
|
AppEntry appEntry = (AppEntry) adapter.getItem(position);
|
74 |
|
Intent intent = new Intent(getActivity(), WebViewActivity.class);
|
|
104 |
private void byPackageName(AppEntry appEntry, Intent intent) {
|
75 |
105 |
String urlString = "https://androidobservatory.org/?searchby=pkg&q="
|
76 |
106 |
+ appEntry.getPackageName();
|
77 |
107 |
intent.setData(Uri.parse(urlString));
|
78 |
108 |
intent.putExtra(Intent.EXTRA_TITLE, R.string.by_package_name);
|
79 |
109 |
startActivity(intent);
|
80 |
|
return true;
|
|
110 |
}
|
|
111 |
|
|
112 |
private void bySigningCertificate(AppEntry appEntry, Intent intent) {
|
|
113 |
String urlString = "https://androidobservatory.org/?searchby=certhash&q="
|
|
114 |
+ Utils.getBinaryHash(appEntry.getApkFile(), "sha1");
|
|
115 |
intent.setData(Uri.parse(urlString));
|
|
116 |
intent.putExtra(Intent.EXTRA_TITLE, R.string.by_signing_certificate);
|
|
117 |
startActivity(intent);
|
81 |
118 |
}
|
82 |
119 |
|
83 |
120 |
@Override
|