現在、私はQRコードをスキャンするQRコードスキャナーを構築しようとしていますが、同時にサーバーのデバイスIDを取得して、最終的にサーバーに送信します。エラーを解決するには "ユーザーが拒否する可能性があるアクセス許可が必要です"というエラーを解決するにはどうすればよいですか?
私はいつも "callユーザー」番目のmanifest.xmlで
によって拒否することができる権限を必要とし、私はすでに私も22
Plusに戻って、答えのいずれも、ここをアンドロイドSDK 23をダウングレードしようとし<uses-permission android:name="android.permission.READ_PHONE_STATE" />
含まれています私の問題を解決するようです。何か案は?
public class MainActivity extends AppCompatActivity {
private static final String LOG_TAG = MainActivity.class.getSimpleName();
private static final int BARCODE_READER_REQUEST_CODE = 1;
public TelephonyManager tel;
public TextView imei;
private TextView mResultTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mResultTextView = (TextView) findViewById(R.id.result_textview);
Button scanBarcodeButton = (Button)
findViewById(R.id.scan_barcode_button);
scanBarcodeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(),
BarcodeCaptureActivity.class);
startActivityForResult(intent, BARCODE_READER_REQUEST_CODE);
}
});
}
private class OkHttpAync extends AsyncTask<Object, Void, Object> {
private String TAG = MainActivity.OkHttpAync.class.getSimpleName();
private Context contx;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Object doInBackground(Object... params) {
contx = (Context) params[0];
String requestType = (String) params[1];
String requestParam = (String) params[2];
Log.e(TAG, "processing http request in async task");
if ("post".equals(requestType)) {
Log.e(TAG, "processing post http request using OkHttp");
postHttpResponse(requestParam);
}
return null;
}
@Override
protected void onPostExecute(Object result) {
super.onPostExecute(result);
/*
if (result != null) {
Log.e(TAG, "populate UI after response from service using OkHttp
client");
respone.setText((String) result);
}
*/
}
}
public void postHttpResponse(String requestParam) {
OkHttpClient httpClient = new OkHttpClient();
String url = "https://requestb.in/1k1hm5y1";
RequestBody formBody = new FormBody.Builder()
// .add("employeeid",userData)
//.add("imie",userData2)
.add("qrcode",requestParam)
.build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
Response response = null;
try{
response = httpClient.newCall(request).execute();
}
catch (IOException e) {
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
// GET DEVICE ID
TelephonyManager tManager = (TelephonyManager) getBaseContext()
.getSystemService(Context.TELEPHONY_SERVICE);
String deviceIMEI = tManager.getDeviceId();
if (requestCode == BARCODE_READER_REQUEST_CODE) {
if (resultCode == CommonStatusCodes.SUCCESS) {
if (data != null) {
Barcode barcode =
data.getParcelableExtra(BarcodeCaptureActivity.BarcodeObject);
Point[] p = barcode.cornerPoints;
//display scan bar code value
mResultTextView.setText(barcode.displayValue);
new MainActivity.OkHttpAync().execute(this,
"post",barcode.displayValue + 33);
} else mResultTextView.setText(R.string.no_barcode_captured);
} else Log.e(LOG_TAG,
String.format(getString(R.string.barcode_error_format),
CommonStatusCodes.getStatusCodeString(resultCode)));
} else super.onActivityResult(requestCode, resultCode, data);
}
}
で[コールの可能性の重複は、ユーザーによって拒否することができる権限が必要です](https://stackoverflow.com/questions/33327984/call-requires-permissions-that-may-be-rejected-by-user) –