Skip to content

Commit

Permalink
Ask for permission
Browse files Browse the repository at this point in the history
  • Loading branch information
Tobiaqs committed May 22, 2018
1 parent a31c729 commit e4515eb
Show file tree
Hide file tree
Showing 3 changed files with 245 additions and 4 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ android {
applicationId "tobiass.whatsappcontactgateway"
minSdkVersion 25
targetSdkVersion 27
versionCode 2
versionName "1.0.1"
versionCode 3
versionName "1.0.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
Expand Down
216 changes: 216 additions & 0 deletions app/src/main/java/tobiass/whatsappcontactgateway/EmptyCursor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
package tobiass.whatsappcontactgateway;

import android.content.ContentResolver;
import android.database.CharArrayBuffer;
import android.database.ContentObserver;
import android.database.Cursor;
import android.database.DataSetObserver;
import android.net.Uri;
import android.os.Bundle;

public class EmptyCursor implements Cursor {
@Override
public int getCount() {
return 0;
}

@Override
public int getPosition() {
return 0;
}

@Override
public boolean move(int offset) {
return false;
}

@Override
public boolean moveToPosition(int position) {
return false;
}

@Override
public boolean moveToFirst() {
return false;
}

@Override
public boolean moveToLast() {
return false;
}

@Override
public boolean moveToNext() {
return false;
}

@Override
public boolean moveToPrevious() {
return false;
}

@Override
public boolean isFirst() {
return false;
}

@Override
public boolean isLast() {
return false;
}

@Override
public boolean isBeforeFirst() {
return false;
}

@Override
public boolean isAfterLast() {
return false;
}

@Override
public int getColumnIndex(String columnName) {
return 0;
}

@Override
public int getColumnIndexOrThrow(String columnName) throws IllegalArgumentException {
return 0;
}

@Override
public String getColumnName(int columnIndex) {
return null;
}

@Override
public String[] getColumnNames() {
return new String[0];
}

@Override
public int getColumnCount() {
return 0;
}

@Override
public byte[] getBlob(int columnIndex) {
return new byte[0];
}

@Override
public String getString(int columnIndex) {
return null;
}

@Override
public void copyStringToBuffer(int columnIndex, CharArrayBuffer buffer) {

}

@Override
public short getShort(int columnIndex) {
return 0;
}

@Override
public int getInt(int columnIndex) {
return 0;
}

@Override
public long getLong(int columnIndex) {
return 0;
}

@Override
public float getFloat(int columnIndex) {
return 0;
}

@Override
public double getDouble(int columnIndex) {
return 0;
}

@Override
public int getType(int columnIndex) {
return 0;
}

@Override
public boolean isNull(int columnIndex) {
return false;
}

@Override
public void deactivate() {

}

@Override
public boolean requery() {
return false;
}

@Override
public void close() {

}

@Override
public boolean isClosed() {
return false;
}

@Override
public void registerContentObserver(ContentObserver observer) {

}

@Override
public void unregisterContentObserver(ContentObserver observer) {

}

@Override
public void registerDataSetObserver(DataSetObserver observer) {

}

@Override
public void unregisterDataSetObserver(DataSetObserver observer) {

}

@Override
public void setNotificationUri(ContentResolver cr, Uri uri) {

}

@Override
public Uri getNotificationUri() {
return null;
}

@Override
public boolean getWantsAllOnMoveCalls() {
return false;
}

@Override
public void setExtras(Bundle extras) {

}

@Override
public Bundle getExtras() {
return null;
}

@Override
public Bundle respond(Bundle extras) {
return null;
}
}
29 changes: 27 additions & 2 deletions app/src/main/java/tobiass/whatsappcontactgateway/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,16 @@
* @author Tobiaqs
*/

import android.Manifest;
import android.app.Activity;
import android.app.LoaderManager;
import android.content.ContentProvider;
import android.content.ContentResolver;
import android.content.Context;
import android.content.CursorLoader;
import android.content.Intent;
import android.content.Loader;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.database.Cursor;
import android.net.Uri;
Expand All @@ -32,8 +35,11 @@

import java.util.List;

public class MainActivity extends Activity implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener, FilterQueryProvider, SearchView.OnQueryTextListener {
//
public class MainActivity extends Activity implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener, FilterQueryProvider, SearchView.OnQueryTextListener {
// constant used when requesting contact permission
private static final int PERMISSIONS_REQUEST_READ_CONTACTS = 1;

// adapter that will provide the contacts cursor to the listview
private SimpleCursorAdapter mAdapter;

// stuff we want from the contact db
Expand Down Expand Up @@ -206,9 +212,28 @@ public boolean onItemLongClick(AdapterView<?> parent, View view, int position, l
return true;
}

@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
if (requestCode == PERMISSIONS_REQUEST_READ_CONTACTS) {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mAdapter.getFilter().filter(null);
} else {
Toast.makeText(this, "Need permission", Toast.LENGTH_SHORT).show();
}
return;
}
}

// the method that actually queries the contact db and also filters
@Override
public Cursor runQuery(CharSequence constraint) {
if (checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{ Manifest.permission.READ_CONTACTS }, PERMISSIONS_REQUEST_READ_CONTACTS);
return new EmptyCursor();
}

ContentResolver cr = getContentResolver();
String selection = null;
String[] selectionArgs = null;
Expand Down

0 comments on commit e4515eb

Please sign in to comment.