从外部启动活动返回时重新启动应用程序

时间:2013-03-11 22:19:36

标签: android android-activity

我有以下主要活动:

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);
  }

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

这是我的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>

1 个答案:

答案 0 :(得分:0)

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

主活动有适当的意图过滤器。

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

要将意图发送到printershare后恢复MainActivity,您需要做两件事:

  1. MainActivity必须使用startActivityForResult();
  2. 发送Intent
  3. printershare必须在完成工作后执行setResult(),然后执行finish()。