1

我有以下主要活动:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

WebView web = (WebView) findViewById(R.id.web);
WebSettings webSettings = web.getSettings();
webSettings.setJavaScriptEnabled(true);
web.setWebViewClient(new WebViewClient() {});
String url="http://myipadress/";
web.loadUrl(url);

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy); 

Button newButton = (Button)findViewById(R.id.afronden);
newButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {    
Uri printFileUri = Uri.parse("file:///sdcard/tablet1.htm");
  Intent i = new Intent(Intent.ACTION_VIEW);
  i.setPackage("com.dynamixsoftware.printershare");
  i.setDataAndType(printFileUri,"text/html");
  startActivity(i);
  }

但在我按下按钮后,printershare 应用程序启动,我可以打印文件。但是我不能让它在打印完成后返回到我的应用程序的开头?我需要添加/更改什么来实现这一点?

这是我的activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">

<RelativeLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentTop="true">

<WebView
android:id="@+id/web"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>

<RelativeLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true">

<Button android:id="@+id/afronden"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PRINT"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
</RelativeLayout>

这是清单:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.Fiets_webview1"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

    <uses-sdk
     android:minSdkVersion="9"
     android:targetSdkVersion="17" />

    <application
     android:allowBackup="true"
     android:icon="@drawable/icon"
     android:label="@string/app_name"
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen">

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


<activity 
android:name="com.dynamixsoftware.printershare"
android:label="@string/app_name" >
<intent-filter>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>

</application>

</manifest>
4

1 回答 1

0

我在这里很困惑。您有一个包名为 com.example.Fiets_webview1 的应用程序。

您拥有带有适当意图过滤器的主要活动。

您有另一个名为“printershare”的活动,具有不同的包名称!奇怪,但可以接受。我假设这个 Activity 对 ACTION_VIEW 有特定的处理,因为 MainActivity 正在向它发送一个明确的意图(顺便说一下,如果打印机共享只接受 ACTION_VIEW,那么没有理由有一个意图过滤器)。

要让 MainActivity 在您向打印机共享发送意图后恢复,您需要做两件事:

  1. MainActivity 必须使用 startActivityForResult(); 发送 Intent;
  2. printshare 必须在完成工作后执行 setResult(),然后执行 finish()。
于 2013-03-12T00:10:50.123 回答