创建一个工具来打开android平板电脑上的本地pdf文件
Create a tool to open local pdf files on android tablet
如果这是一个愚蠢的问题,我很抱歉,但我对这个主题的了解非常有限。我并不是要求一个完整的解决方案,我只是需要朝着正确的方向努力。
我有一个adroid平板电脑,SD卡上有很多pdf文件。现在我想制作一个工具来扫描带有文件名的条形码并打开这个pdf文件。条形码将类似于test
,相应的文件将是file://sdcard/pdf/test.pdf
。条形码扫描仪在扫描后进行输入,所以我只需要屏幕上的一个文本框和输入键就可以启动打开活动。我们宁愿不将这款平板电脑连接到我们的网络,这样它就没有互联网连接。
我试着为此制作一个应用程序,但由于我的android编程技能非常有限,这对我来说并不奏效。现在我正在尝试用php或javascript制作一个网络应用程序。这对我来说并不奏效,因为我在这两方面的经验也很有限。起初我想在VBA中使用MS Access工具,但由于没有Android的运行时,这个想法没有实现。
我已经在寻找解决方案,但没有找到任何可以使用的东西。
有人对我应该使用的工具有什么建议吗?也许能让我走上正确的方向。欲了解更多信息,请询问。
更新1:
现在我已经用HTML和JavaScript创建了一个网页。我的代码如下:
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<script type="text/javascript">
function clickyClick() {
url = 'file:///mnt/sdcard/documents/instructies/' + document.getElementById("barcode").value + '.pdf'
window.open(url, '_blank');
document.getElementById("barcode").value = "";
}
</script> <title>Open werkinstructie</title>
</head>
<body>
<form><span style="font-weight: bold; font-family: Helvetica,Arial,sans-serif; font-size:50px;">Barcode:</span>
<input autofocus="autofocus" style="font-size:50px" name="barcode" id="barcode"
onkeydown="if (event.which == 13) clickyClick()" type="text"> </form>
<br>
<button style="height: 85px; width: 120px; font-size: 30px; font-weight:bold;"
onclick="clickyClick()">Open</button>
</body>
</html>
我用平板电脑上的Firefox打开了它。目前,我无法使用条形码扫描仪或回车键使其工作,但按钮可以工作。这段代码在Adobe Reader中打开文件,这正是我想要做的
更新2:MainActivity.java:
package com.example...............;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
final String TAG = null;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText mEditText = (EditText) findViewById(R.id.editText1);
mEditText.setImeActionLabel("Klaar", KeyEvent.KEYCODE_ENTER);
EditText.OnEditorActionListener exampleListener = new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
Log.d(TAG, "onEditorAction, key=" + event.getKeyCode() + " action=" + event.getAction());
if (event.getAction() == KeyEvent.KEYCODE_ENTER) {
openPDF(mEditText.toString());
mEditText.setText("");
}
return true;
}
};
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private void openPDF(String fileName){
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(baseDir + File.separator + "documents/instructies/"+fileName+".pdf");
if (file.exists()) {
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "No reader",
Toast.LENGTH_SHORT).show();
}
}
}
}
更新3:MainActivity.java
package com.example..............;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
final String LOG_TAG = "MainActivity";
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText mEditText = (EditText) findViewById(R.id.editText1);
mEditText.setImeActionLabel("Klaar", KeyEvent.KEYCODE_ENTER);
mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.d(LOG_TAG, "onEditorAction, key=" + event.getKeyCode() + "action =" + event.getAction());
if (event.getAction() ==1 && event.getKeyCode() ==66) {
String Text = mEditText.getText().toString();
openPDF(Text);
mEditText.setText("");
}
return true;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private void openPDF(String fileName) {
File file = new File("sdcard/documents/instructies/" + fileName + ".pdf");
//File file = new File("sdcard/documents/instructies/0195476.pdf");
//final String LOG_TAG_2 = "MainActivity";
//Log.d(LOG_TAG_2, "exist = " + file.exists());
if (file.exists()) {
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "No reader",
Toast.LENGTH_SHORT).show();
}
}
}
}
在布局中添加EditText如下:
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
>
<requestFocus />
</EditText>
在您的活动中,将此添加到onCreate方法中:
final EditText mEditText = (EditText) findViewById(R.id.editText1);
mEditText.setImeActionLabel("Done", KeyEvent.KEYCODE_ENTER);
EditText.OnEditorActionListener exampleListener = new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
Log.d(TAG, "onEditorAction, key="+event.getKeyCode() + " action="+event.getAction());
if (event.getAction() == KeyEvent.KEYCODE_ENTER) {
openPDF(mEditText.toString());
}
return true;
}
};
要打开PDF,请从市场安装PDF应用程序,并在您的活动中打开PDF如下:
private void openPDF(String fileName){
File file = new File("/sdcard/pdf/"+fileName+".pdf");
if (file.exists()) {
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "No reader",
Toast.LENGTH_SHORT).show();
}
}
}
- 隐藏移动设备/平板电脑中文本字段上的键盘
- plupload智能手机和平板电脑浏览按钮事件未启动
- iOS iPad平板电脑渲染视口不正确
- 创建一个工具来打开android平板电脑上的本地pdf文件
- jQuery Ajax在Android平板电脑浏览器上失败
- event.prventDefault()不在使用touchstart的Android平板电脑上
- JavaScript,CSS,Android平板电脑的HTML5编辑器
- 通过JavaScript检测和区分Android平板电脑和Android手机
- 如何在平板电脑和手机的Android设备的方向更改中获得正确的窗口宽度
- DT 包:styleColorbar() 在 Android 平板电脑上不起作用
- 如何在平板电脑和手机的android设备的方向更改上获得正确的窗口宽度
- iPad / Android平板电脑的HTML5 Canvas(游戏)
- 哪些Android平板电脑可用于测试Javascript繁重的web应用程序
- Cordova滑动事件检测选项为Android, iOS和Windows平板电脑
- 通过javascript检测Android设备是手机还是平板电脑
- 如何为Windows 8和Android平板电脑制作D3js应用程序
- 如何在Android平板电脑上保存密码自动登录chrome-mobile网站
- 检测Android智能手机或Android平板电脑与JS
- 需要:离线IDE,用于在Android平板电脑上开发HTML / JavaScript
- 在Android平板电脑/手机上调试javascript