Gamemaker Studio android java 扩展未执行意图
Gamemaker Studio android java extension not executing intent
我正在做一个扩展来更新操作系统,有一个新的图像文件,它被 GM:S 中的函数调用,如下所示:
osNotice(files+"/newButtonSkin.png");
注意变量文件是绝对路径
然后函数将其作为字符串发送到 java class 扩展名:
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>
这是游戏时日志文件的截图运行:
应用程序 运行 的结果是图像没有更新到 os,为什么意图不是 运行?为什么当我知道方法是 运行 时日志会显示 "can't find method on extension class: null"?
解决了!!要让 Gamemaker: Studio 端可以看到意图,您必须调用:
RunnerActivity.CurrentActivity.sendBroadcast(intent);
完成构建后,intent.This 告诉 gm:s 方媒体扫描器的广播意图已经开始。感谢 GMC 社区的 Mool 向我指出这一点!!
更详细地说,广播意图与启动 activity 的其他意图不同,广播意图会在扩展的 java 端触发异步事件,如果您正在启动 activity 在你的 java 文件中你会用
警告 gm:s 的 jnilib
RunnerActivity.CurrentActivity.startActivity(intent);
并记得扩展您的 class,例如:
public class MyClass extends Activity {// for either broadcast or start activity
我正在做一个扩展来更新操作系统,有一个新的图像文件,它被 GM:S 中的函数调用,如下所示:
osNotice(files+"/newButtonSkin.png");
注意变量文件是绝对路径
然后函数将其作为字符串发送到 java class 扩展名:
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>
这是游戏时日志文件的截图运行:
应用程序 运行 的结果是图像没有更新到 os,为什么意图不是 运行?为什么当我知道方法是 运行 时日志会显示 "can't find method on extension class: null"?
解决了!!要让 Gamemaker: Studio 端可以看到意图,您必须调用:
RunnerActivity.CurrentActivity.sendBroadcast(intent);
完成构建后,intent.This 告诉 gm:s 方媒体扫描器的广播意图已经开始。感谢 GMC 社区的 Mool 向我指出这一点!!
更详细地说,广播意图与启动 activity 的其他意图不同,广播意图会在扩展的 java 端触发异步事件,如果您正在启动 activity 在你的 java 文件中你会用
警告 gm:s 的 jnilib RunnerActivity.CurrentActivity.startActivity(intent);
并记得扩展您的 class,例如:
public class MyClass extends Activity {// for either broadcast or start activity