1. 程式人生 > >紅米手機無法呼叫相機

紅米手機無法呼叫相機

         公司專案中,有個拍照設定頭像功能,某天專案經理跑來跟我說,一臺紅米測試機上調用不了相機。

         我一驚,連忙在小米1S、2S、三星note、華為、魅族上跑了一圈,發現都是好好的。然後看了下程式碼,感覺沒任何問題。

          只好告訴他,這是系統差異,不要在意這些細節。


 上段呼叫相機的原始碼(不知道他們從哪拷來的)

		Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
		SimpleDateFormat timeStampFormat = new SimpleDateFormat(
				"yyyy_MM_dd_HH_mm_ss");
		String filename = timeStampFormat.format(new Date());
		ContentValues values = new ContentValues();
		values.put(Media.TITLE, filename);
		try {
			photoUri = getActivity().getContentResolver().insert(
					MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 
			intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
			getActivity().startActivityForResult(intent, CAMERA);
		} catch (Exception e) {
			e.printStackTrace(); 
		}



今天,突然想起這個問題,感覺越來越不對,於是找了某個社交網站,試了下頭像設定功能。

臥槽!!!!!!!竟然調出了相機!!!!!!!!

        難道還有另外一種呼叫方式,於是上網各種找答案,但找不到啊!!!呼叫相機的方式都長那樣,而且近段時間,谷歌打不開,不知道是不是被和諧了。

        呵呵,咱是那麼容易放棄的人嗎。

下載apk,開啟反編譯工具,直接去找原始碼。

         吐槽下某公司的程式猿,一個點選彈框事件竟然用的是ContextMenu,不是Dialog,而且彈框前還有一段不知道幹嘛的程式碼,各種類呼叫,看起來像通訊,直接把我帶坑裡去了。可是你僅僅只是彈個框選擇是使用相機還是相簿啊!!!!

         終於花了大半天,把它呼叫相機的程式碼給找到了,一看,我哭了,心中一萬頭草泥馬奔騰而過。

 public final void c()
  {
    if (f())
    {
      Intent localIntent = new Intent("android.media.action.IMAGE_CAPTURE");
      h = null;
      h = new File(Environment.getExternalStorageDirectory() + "/jiayuanQDate", "temp");
      localIntent.putExtra("output", Uri.fromFile(h));
      this.b.startActivityForResult(localIntent, 1008);
    }
  }


趕緊開啟除錯模式,看了下photoUri的值,為null

    

        呵呵,呵呵.......