Использование незаявленного идентификатора «kUTTypeURL» [дубликат]

Я столкнулся с той же проблемой:

E/AndroidRuntime: FATAL EXCEPTION: Thread-4
              Process: com.example.languoguang.welcomeapp, PID: 4724
              java.lang.RuntimeException: Can't toast on a thread that has not called Looper.prepare()
                  at android.widget.Toast$TN.<init>(Toast.java:393)
                  at android.widget.Toast.<init>(Toast.java:117)
                  at android.widget.Toast.makeText(Toast.java:280)
                  at android.widget.Toast.makeText(Toast.java:270)
                  at com.example.languoguang.welcomeapp.MainActivity$1.run(MainActivity.java:51)
                  at java.lang.Thread.run(Thread.java:764)
I/Process: Sending signal. PID: 4724 SIG: 9
Application terminated.

Before: onCreate function

Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
        Toast.makeText(getBaseContext(), "Thread", Toast.LENGTH_LONG).show();
    }
});
thread.start();

После: onCreate function

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        Toast.makeText(getBaseContext(), "Thread", Toast.LENGTH_LONG).show();
    }
});

сработало.

95
задан Ashish Agarwal 1 August 2012 в 09:35
поделиться

5 ответов

Вы должны добавить инфраструктуру MobileCoreServices в проект, а затем импортировать ее:

#import <MobileCoreServices/MobileCoreServices.h>

Это заставит проблему уйти.

236
ответ дан The dude 24 August 2018 в 17:11
поделиться

swift

import MobileCoreServices

Цель c

#import <MobileCoreServices/MobileCoreServices.h>
29
ответ дан budidino 24 August 2018 в 17:11
поделиться

Я новичок в iOS-разработке и xcode и потратил некоторое время, пытаясь выяснить, почему просто импорт не работал. После выяснения проблемы с более опытным членом моей команды я узнал, что вы не только должны включать

#import <MobileCoreServices/MobileCoreServices.h>

, но также должны связывать двоичные файлы с библиотекой инфраструктуры MobileCoreServices с фазами сборки ваш проект.

Надеюсь, это поможет! Я обязательно нуждался в этой информации, когда я это делал.

20
ответ дан Josh Lowe 24 August 2018 в 17:11
поделиться
  1. Добавить MobileCoreServices.framework, если он еще не добавлен. Выберите свою цель и добавьте связанные бинарные файлы с библиотекой.
  2. Добавить #import <MobileCoreServices/MobileCoreServices.h>
0
ответ дан Ram G. 24 August 2018 в 17:11
поделиться

Ответ Swift 4 с кодом видеокамеры и делегатом imagePicker:

import MobileCoreServices

Открыть видеокамеру

   @IBAction func openVideoCamera(_ sender: Any) {
     if UIImagePickerController.isSourceTypeAvailable(.camera) {
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        imagePicker.sourceType = .camera
        imagePicker.mediaTypes = [kUTTypeMovie as String]
        imagePicker.videoMaximumDuration = 10 // or whatever you want
        imagePicker.videoQuality = .typeMedium
        imagePicker.allowsEditing = false
        present(imagePicker, animated: true, completion: nil)
    }

Делегат ImagePicker:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let mediaType = info[UIImagePickerControllerMediaType] as AnyObject

    if mediaType as! String == kUTTypeMovie as String {
            let videoURL = info[UIImagePickerControllerMediaURL] as? URL
            print("VIDEO URL: \(videoURL!)")
    }
    dismiss(animated: true, completion: nil)
}
0
ответ дан xscoder 24 August 2018 в 17:11
поделиться