जैसा कि डॉ_सुली ने सुझाव दिया था, मैं इसे सिर्फ एक कोड में परिवर्तित कर रहा हूं और यह मेरे लिए अच्छी तरह से काम करता है, अगर प्रत्यक्ष कैमरा एप्लिकेशन तक पहुंचने का मामला है और अन्य भाग उपयोगकर्ता को सिस्टम कैमरा के साथ अन्य कैमरा एप्लिकेशन चुनने की अनुमति देता है।
protected static final int CAMERA_ACTIVITY = 100;
Intent mIntent = null;
if(isPackageExists("com.google.android.camera")){
mIntent= new Intent();
mIntent.setPackage("com.google.android.camera");
mIntent.setAction(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
mIntent.putExtra("output", Uri.fromFile(new File(Environment
.getExternalStorageDirectory(), "/myImage" + ".jpg")));
}else{
mIntent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
mIntent.putExtra("output", Uri.fromFile(new File(Environment
.getExternalStorageDirectory(), "/myImage" + ".jpg")));
Log.i("in onMenuItemSelected",
"Result code = "
+ Environment.getExternalStorageDirectory());
}
startActivityForResult(mIntent, CAMERA_ACTIVITY);
onActivityResult अंदर
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Log.i("in onActivityResult", "Result code = " + resultCode);
if (resultCode == -1) {
switch (requestCode) {
case CAMERA_ACTIVITY:
//do your stuff here, i am just calling the path of stored image
String filePath = Environment.getExternalStorageDirectory()
+ "/myImage" + ".jpg";
}
}
}
isPackageExists पैकेज की पुष्टि करेगा मौजूद हैं या नहीं अपना सामान है।
public boolean isPackageExists(String targetPackage){
List<ApplicationInfo> packages;
PackageManager pm;
pm = getPackageManager();
packages = pm.getInstalledApplications(0);
for (ApplicationInfo packageInfo : packages) {
if(packageInfo.packageName.equals(targetPackage)) return true;
}
return false;
}
या आप मेरे रास्ते में कर सकते हैं इसके बहुत आसान है, यह सब प्रणाली आवेदन फिल्टर करेगा और फिर बाद में आप नाम इसलिए तुलना यह मुश्किल कोडिंग के कारण सभी फोन लेकिन इसके बाद के संस्करण तकनीक पर काम से काम नहीं चलेगा हर फोन पर। बाद में मैंने ऊपर वर्णित कैमरा गतिविधि शुरू करने के लिए इस पैकेज नाम का उपयोग कर सकते हैं।
PackageManager pm = this.getPackageManager();
List<ApplicationInfo> list = getPackageManager().getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
for (int n=0;n<list.size();n++) {
if((list.get(n).flags & ApplicationInfo.FLAG_SYSTEM)==1)
{
Log.d("Installed Applications", list.get(n).loadLabel(pm).toString());
Log.d("package name", list.get(n).packageName);
if(list.get(n).loadLabel(pm).toString().equalsIgnoreCase("Camera"))
break;
}
}
थोड़ा यहाँ जोड़ने के लिए, आप आशय आप पहले से ही किसी भी तरह से setComponent –
धन्यवाद जस्टिन कॉल करने के लिए छोड़कर में परिवर्तन नहीं होता है। मुझे लगता है कि मैं डिफ़ॉल्ट सिस्टम कैमरा (com.google.android.camera) के घटक नाम की जांच कर सकता हूं और यदि यह मौजूद है तो सेटकंपोनेंट दृष्टिकोण का उपयोग करें अन्यथा सामान्य दृष्टिकोण पर वापस आते हैं। –