2016-12-22 86 views
1

我正在做的擴展,更新操作系統,有一個新的圖像文件時,它會通過在GM的函數調用:就像這樣:Gamemaker工作室Android的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

運行應用程序的結果是圖像不更新爲操作系統,爲什麼不正在運行的意圖?以及爲什麼日誌說當我知道該方法正在運行時,「無法找到擴展類的方法:null」?

回答

1

解決!要對Gamemaker意圖明顯:你有工作室一邊叫:

 RunnerActivity.CurrentActivity.sendBroadcast(intent); 

敲定建設intent.This後告訴GM:身邊的廣播意圖媒體掃描儀已經開始。感謝Mool在GMC社區向我指出這一點!

而且要詳細說明,廣播意圖與其他啓動活動的意圖不同,廣播意圖在擴展的java端觸發異步事件,如果您正在啓動java文件中的活動,則會警告jnilib通用汽車:s的

 RunnerActivity.CurrentActivity.startActivity(intent); 

,也記得要擴展您的類,如:

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