2013-04-22 7 views
5

インストールするには、「startActivity」を使用したときにどのように私はResultCodeのを取得することができます:私はそれを伝えるためのResultCodeを返すようにしたい私は以下のコードで<code>/data/data/package_name/files</code>のディレクトリに保存されたAPKインストールAPK

Uri uri = Uri.fromFile(new File(apkSavingPath)); 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(uri,"application/vnd.android.package-archive"); 
mContext.startActivity(intent); 

を私はapkが正常にインストールされたかどうか、私はstartActivityForResultの方法を試しましたが、うまくいかなかったのです。

onActivityResultのメソッドでは、resultCodeは常に0(zero)であり、apkが正常にインストールされたかどうかです。そのような結果コードを取得することはできますか?

+0

簡単な答えは "あなたはできない" です。インストーラアクティビティは結果を返しません。 –

+0

[APKをプログラムでアンドロイドにインストールする](http://stackoverflow.com/questions/6362479/install-apk-programmatically-on-android) –

答えて

5

これを試してください。

Intent intent = new Intent(Intent.ACTION_VIEW);   
intent.setDataAndType("ApkFilePath...","application/vnd.android.package-archive"); 
activity.startActivityForResult(intent,5000); 

このクラスのAndroidManifest.xml

<receiver android:name=".PackageReceiver" android:enabled="true" android:exported="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.PACKAGE_ADDED" /> 
     <action android:name="android.intent.action.PACKAGE_CHANGED" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <data android:scheme="package" /> 
    </intent-filter> 
</receiver> 

であなたの受信機を追加し、新たなパッケージがインストールされたときに呼び出されます:

public class PackageReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    // handle install event here 
    } 
} 
+1

ありがとう!出来た。しかし、 'android:enabled =" true "とアンドロイド:exported =" true "を加えた後に。私はあなたの答えを編集しました。 – breceivemail

+0

それはいいですね。親切に答えを受け入れる。 –

関連する問題