Android 是否有一种与包无关的方式来制作二维码相关的意图?
我正在安卓应用程序中实现一项功能,它扫描二维码,并对返回的数据进行处理 我当前的解决方案是从zxing包请求扫描活动Android 是否有一种与包无关的方式来制作二维码相关的意图?,android,android-intent,qr-code,Android,Android Intent,Qr Code,我正在安卓应用程序中实现一项功能,它扫描二维码,并对返回的数据进行处理 我当前的解决方案是从zxing包请求扫描活动 Intent intent = new Intent("com.google.zxing.client.android.SCAN"); intent.setPackage("com.google.zxing.client.android"); intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); startActivityForResult(
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.google.zxing.client.android");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, REQUEST_QR_SCAN);
但是,当用户的手机上没有应用程序时,这将无法工作并导致错误。我想避免检查用户是否安装了这个特定的应用程序,因为他们可能选择了不同的QR扫描仪
我似乎找不到一种方法来让用户说出我想扫描二维码,然后让用户选择合适的应用程序。e、 g.就像他们从gallery应用程序中选择图像一样
有什么解决方案吗?此示例使用库-
您可以在项目中使用ZXing库,通过gradle添加它,不幸的是,只有第三个pt的端口可用,或者将自己的库包装在应用程序中,并将活动声明到AndroidManifest.XML中 那么你的目的就是为了你自己的应用
此外,您还可以在ZXing应用程序上打开google play,以便用户安装它。这非常有效,但我不知道它可以作为一个库使用。谢谢:-
public class PayQR extends Fragment implements QRCodeReaderView.OnQRCodeReadListener {
public static QRCodeReaderView mydecoderview;
public static String QRData;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_pay_qr, container, false);
getActivity().setTitle(R.string.Pay_QR);
try {
mydecoderview = (QRCodeReaderView) view.findViewById(R.id.qrdecoderview);
mydecoderview.setOnQRCodeReadListener(this);
// Use this function to enable/disable decoding
mydecoderview.setQRDecodingEnabled(true);
// Use this function to change the autofocus interval (default is 5 secs)
mydecoderview.setAutofocusInterval(2000L);
// Use this function to enable/disable Torch
mydecoderview.setTorchEnabled(true);
// Use this function to set front camera preview
mydecoderview.setFrontCamera();
// Use this function to set back camera preview
mydecoderview.setBackCamera();
}catch (RuntimeException ex){
}
return view;
}
@Override
public void onResume() {
super.onResume();
mydecoderview.startCamera();
}
@Override
public void onQRCodeRead(String text, PointF[] points) {
try{
QRData = text.replaceAll("\u00A0"," ");
Fabric.with(getActivity(), new Crashlytics());
mydecoderview.stopCamera();
getActivity().setTitle(R.string.Order_payment);
}
catch (RuntimeException ex){
}
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onStop() {
super.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
}
}