Я спрашиваю предложения о том, как вы будете собирать и сохранять то, что в данный момент отображается в приложении Android, скомпилированном с PhoneGap, нажатием кнопки.
Я часами искал возможные способы сделать это:
Создание плагина Phonegap, который находит текущее представление, преобразует его в растровое изображение, а затем сохраняет его на SD-карту устройства. Как видно здесь .
Использует тег HTML5 Canvas и преобразует этот и любые дочерние элементы в файл PNG, используя метод toDataURL, как показано здесь .
Я на свободе и буду очень признателен за любые предложения, учебные пособия или ссылки на все, что может помочь. Существуют сотни сообщений о том, что это невозможно сделать в Android, но я не могу поверить, что, учитывая, что нашел две ссылки, которые могут быть возможны.
Я пробовал ссылки выше, но есть некоторые нерешенные проблемы, которые мешают мне заставить их работать. Я искал альтернативы.
Редактировать: Ниже приведен код плагина, который я использую, вместе с кодом из первой ссылки о том, как записать скриншот вида.
package com.company.msgbox;
//imports
@Override
public PluginResult execute(String arg0, final JSONArray arg1, String arg2) {
if ( arg0.equals(SHOW) )
{
this.ctx.runOnUiThread(new Runnable()
{
public void run()
{
// try/catch generated by editor
try {
msg = arg1.getString(MSG_INDEX);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
AlertDialog alertDialog = new AlertDialog.Builder(ctx).create();
alertDialog.setTitle("Title");
alertDialog.setMessage(msg);
alertDialog.show();
//screen shot
View content = findViewById(R.id.rootlayout);
Bitmap bitmap = content.getDrawingCache();
File file = new File("/sdcard/test.png");
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.PNG, 100, ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}//end of scope
});
}
return new PluginResult(Status.OK);
}
}
Я получаю исключение Null Pointer в этой строке:
View content = findViewById(R.id.rootlayout);
Мой вопрос был бы: создает ли Phonegap представления в Android и, если да, как вы выбираете их с помощью метода findViewById?