2016-12-22 12 views
1

Делаю расширение для обновления операционной системы, что есть новый файл изображение, он вызывается функцией в GM: S, как это:Gamemaker Студия андроид расширения Java не выполняет намерения

osNotice(files+"/newButtonSkin.png"); 

Примечания что переменных файлы путь absolout

то функция отправляет это в виде строки расширения класса Java:

  package ${YYAndroidPackageName};//Import the GM:S stuff 
    import ${YYAndroidPackageName}.R; 
    import com.yoyogames.runner.RunnerJNILib; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.net.Uri; 
    import android.os.Environment; 
    import android.util.Log; 
    import java.io.File; 
    import java.lang.String; 


public class PickMe extends Activity { 
    public final void osNotice(String fupdate)//Notify the OS that there's a new media file available 
    { 
     Log.i("yoyo", "New file to alert os- "+fupdate); 
     String canAlert = Environment.getExternalStorageState(); 
     if (Environment.MEDIA_MOUNTED.equals(canAlert)) 

     { 
     File file = new File(fupdate); 
     Log.i("yoyo", "File ready to send- "+ fupdate); 
     Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)); 
     intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
     sendBroadcast(intent); 
     Log.i("yoyo", "Updated sucessfully! "+fupdate); 
     } 
     else 
     Log.i("yoyo", "Could not update file- "+fupdate); 
    } 
} 

в моем манифесте я закачиваемой:

<activity android:name=".PickMe" 
     android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

Вот скриншот из файла журнала, когда игра запускается:

Runner Log file

В результате запуска приложения является то, что изображение не обновляется до зева, почему не цель запущена? и почему журнал говорит, что «не удается найти метод в классе extension: null», когда я знаю, что метод запущен?

ответ

1

Решенный! чтобы умысел видна Gamemaker: Студия стороны вы должны вызвать:

 RunnerActivity.CurrentActivity.sendBroadcast(intent); 

после завершения строительства intent.This говорит ГМ: s стороны, что широковещательное намерение сканера СМИ уже началось. благодаря Mool в сообществе GMC, чтобы указать на это мне!

И, чтобы уточнить, трансляция намерений отличается от других намерений, которые запускают действие, трансляции намерены запускать асинхронное событие на стороне Java расширения, если вы запускаете активность в своем java-файле, вы должны предупредить jnilib гМ: s с

 RunnerActivity.CurrentActivity.startActivity(intent); 

, а также запоминание, чтобы расширить класс как:

public class MyClass extends Activity {// for either broadcast or start activity