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」という別のアクティビティがあります。奇妙ですが、受け入れられます。MainActivity が明示的なインテントを送信しているため、このアクティビティには ACTION_VIEW の特定の処理があると思います (ちなみに、printershare が ACTION_VIEW のみを受け入れる場合、インテント フィルターを使用する理由はありません)。

インテントをプリンター共有に送信した後に MainActivity を再開するには、次の 2 つのものが必要です。

  1. MainActivity は、startActivityForResult(); でインテントを送信する必要があります。
  2. printershare は、作業が完了したら、setResult() に続いて finish() を実行する必要があります。
于 2013-03-12T00:10:50.123 に答える