Я создал другой класс для сканирования QR-кода и извлеките приведенный ниже код:
public class ScanQrCode extends Activity{
private static final int REQUEST_CODE_QR_SCAN = 101;
private static final int REQUEST_CODE_CAMERA = 1;
private static final String LOGTAG = "Result123";
private static Context context;
public ScanQrCode(Context context){
this.context=context;
}
Эта функция вызывает новое действие и пытается запустить вышеуказанное действие с контекстной ссылкой из MainActivity.this передается в конструктор * Я также попытался вызвать Myclass.this.StartActivityForResult (), но это дает ошибку нулевого указателя.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode != Activity.RESULT_OK)
{
Log.d(LOGTAG,"COULD NOT GET A GOOD RESULT.");
if(data==null)
return;
//Getting the passed result
String result = data.getStringExtra("com.blikoon.qrcodescanner.error_decoding_image");
if( result!=null)
{
android.app.AlertDialog alertDialog = new android.app.AlertDialog.Builder(context).create();
alertDialog.setTitle("Scan Error");
alertDialog.setMessage("QR Code could not be scanned");
alertDialog.setButton(android.app.AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
}
return;
}
if(requestCode == REQUEST_CODE_QR_SCAN)
{
if(data==null)
return;
//Getting the passed result
String result = data.getStringExtra("com.blikoon.qrcodescanner.got_qr_scan_relult");
Log.d(LOGTAG,"Have scan result in your app activity :"+ result);
android.app.AlertDialog alertDialog = new android.app.AlertDialog.Builder(context).create();
alertDialog.setTitle("Scan result");
alertDialog.setMessage(result);
alertDialog.setButton(android.app.AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
startActivity();
}
}
}