2014-05-07 133 views
0

我能夠添加我的科爾多瓦應用程序在共享界面,但我不知道如何將共享圖片在我的科爾多瓦應用程序中。分享圖片從android圖庫到科爾多瓦應用程序使用科爾多瓦

我用com.borismus.webintent插件

和我打電話低於deviceready代碼,但沒有運氣。

 function startActivity() { 
     alert('start'); 
     window.plugins.webintent.startActivity({ 
      action: window.plugins.webintent.ACTION_VIEW, 
      url: theFile.toURL(), 
      type: 'application/vnd.android.package-archive' 
     }, 
     function() { alert('success');}, 
     function() { 
      alert('Failed to open URL via Android Intent.'); 
      console.log("Failed to open URL via Android Intent. URL: " +      theFile.fullPath) 
      } 
     ); 
     } 

    function broadcast() { 
     window.plugins.webintent.sendBroadcast({ 
     action: 'com.dummybroadcast.action.triggerthing', 
     extras: { 
       'option': true 
      } 
     }, function (args) { 
      alert(args); 
     }, function (args) { 
      alert(args); 
     }); 
    } 


    function getURI() { 
     window.plugins.webintent.getUri(function (url) { 
      if (url !== "") { 
      // url is the url the intent was launched with 
      alert(url); 
      } 
      else { 
      alert('ddfsdf'); 
      } 
     }); 
     } 

我的要求是在畫廊,如果我在sahre點擊圖標,還有我的應用程序應該會出現,一旦我選擇我的應用程序,我應該能得到我的科爾多瓦的應用程序,圖像。

我使用的科爾多瓦3.4.0,Android的enter image description here

和我的AndroidManifest.xml是

<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:name="Share" android:theme="@android:style/Theme.Black.NoTitleBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.SEND" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <action android:name="android.intent.action.SEND_MULTIPLE" /> 
      <data android:mimeType="application/vnd.google.panorama360+jpg" /> 
      <data android:mimeType="image/*" /> 
      <data android:mimeType="video/*" /> 
      <data android:mimeType="text/plain" /> 
     </intent-filter> 
     <intent-filter> 
     <action android:name="com.creative.share.UNIQUESTRING" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="IntentTest" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW"></action> 
     <category android:name="android.intent.category.DEFAULT"></category> 
     <category android:name="android.intent.category.BROWSABLE"></category> 
     <data android:host="www.youtube.com" android:scheme="http"></data> 
    </intent-filter> 
    </activity> 


    <activity android:name=".BrowserActivity" android:label="@string/app_name" > 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <data android:scheme="http" /> 
    </intent-filter> 
    </activity> 


    <provider android:authorities="com.creative.share.plugin.emailcomposer.attachmentprovider" android:name="de.appplant.cordova.plugin.emailcomposer.AttachmentProvider" /> 
</application> 

回答

2

我想我可以部分地回答這個問題。我相信您正在嘗試將圖片分享到您的應用,並在其中進行處理。

在寫這篇文章的時候,你所提到的插件中有一個錯誤,但是你可以嘗試以下解決方法:https://github.com/Initsogar/cordova-webintent/issues/23

我AndroidManifest.xml中如下所示:

<application android:icon="@drawable/icon" android:label="@string/app_name" 
    android:hardwareAccelerated="true"> 
    <activity android:name="Blah" android:label="@string/app_name" 
      android:theme="@android:style/Theme.Black.NoTitleBar" 
      android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.SEND"/> 
      <action android:name="android.intent.action.SEND_MULTIPLE"/> 
      <category android:name="android.intent.category.DEFAULT"/> 
      <data android:mimeType="*/*"/> 
     </intent-filter> 
    </activity> 
</application> 

我index.js看起來像下面這樣:

window.plugins.webintent.getExtra(webintent.EXTRA_STREAM, 
    function (url) 
    { 
     console.log('getExtra: EXTRA_STREAM'); 
     console.log(url); 

    }, function() 
    { 
     console.log('getExtra: EXTRA_STREAM failed'); 
    }); 

我希望這是有用的。

爲了完整起見,如果在讀取時沒有拉入修復程序,您可以手動將修改手動應用到platforms/android/src/com/borismus/webintent目錄中。

建議的解決辦法是改變WebIntent.java(約94線)以下:

if (i.hasExtra(extraName)) { 
    String r = i.getStringExtra(extraName); 
    if (null === r) { 
     r = ((Uri) i.getParcelableExtra(extraName)).toString(); 
    } 

    callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, r)); 
    return true; 
} 
+0

將它用於多張圖片共享工作?因爲當我選擇多個圖像並點擊共享圖標時,我的應用程序變得可見,但它沒有給應用程序提供內容並拋出「試圖調用虛擬方法」java.lang.String android.net.Uri.toString()'on空對象引用「錯誤。它適用於單個圖像共享。 請幫幫我。 –

+0

嘿@Mr_Green,我真的不知道。您可能最擅長在原始GitHub倉庫中引導此問題:https://github.com/Initsogar/cordova-webintent/issues/23 – Mike